分享PHP+js完美解决取标题的前10个字(1个汉字也算一个字)! 晕,当然是原创的!昨天晚上睡觉想出来的!呵呵!收藏记得打上myspsp的标签!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果禁用了js呢?$s = '以前在这里发过一个关于取标题前10个字的求救贴';preg_match_all('/[\x80-\xff]?./', $s, $r);echo join('', array_slice($r[0], 0, 20)); 噢,是10个字echo join('', array_slice($r[0], 0, 10)); function gbk_strlen(&$str) { $len=strlen($str); $l=0; for($i=0;$i<$len;$i++) { if(ord(substr($str,$i,1))>=0x81) $i++; $l++; } return $l; } function gb2312_strlen(&$str) { $len=strlen($str); $l=0; for($i=0;$i<$len;$i++) { if(ord(substr($str,$i,1))>=0xa1) $i++; $l++; } return $l; } xuzuning(唠叨) 你好!preg_match_all('/[\x80-\xff]?./', $s, $r);echo join('', array_slice($r[0], 0, 20));恕在下水平底下,请问这是什么意思!我的php水平很低,还请多多指教!hzqghost(古月血魔) 你好!你写的这个方法我用过,不是很理想! preg_match_all('/[\x80-\xff]?./', $s, $r);用正则表达式提取匹配的字符到数组其中[\x80-\xff].匹配汉字. 匹配任意字符所以[\x80-\xff]?. 将一个汉字作为一组(两个字节),一个ascii字符也作为一组(一个字节)echo join('', array_slice($r[0], 0, 20));中array_slice从数组中取出子数组,有点substr对于字符串的味道join连接数组成字符串 function ch_left($s, $len){ if(strlen($s)>$len) $s=substr($s, 0, $len); $ch='[\x80-\xff]'; if(preg_match("/$ch($ch{2})*$/", $s)) $s=substr($s,0,-1); return $s;} 请教一个sql查询 smartemplate缓存疑问:为何无法生成缓存文件? 请问高手间接变量的用法? 这种session错误怎么更正? 请教字串处理问题: 一个整数怎么变成固定长的字串,要求不足长的前面补零 ? 讨论php中有那些错误是可以屏蔽不显示出来的? 不上传图片怎么才能生成缩略图? 不好意思,一个很浅显的问题,有关用户登陆 还是session问题! 各位大虾,快帮小第一个忙! 如果用PHP代码浏览网页? smarty模板问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$s = '以前在这里发过一个关于取标题前10个字的求救贴';
preg_match_all('/[\x80-\xff]?./', $s, $r);
echo join('', array_slice($r[0], 0, 20));
echo join('', array_slice($r[0], 0, 10));
{
$len=strlen($str);
$l=0;
for($i=0;$i<$len;$i++)
{
if(ord(substr($str,$i,1))>=0x81) $i++;
$l++;
}
return $l;
} function gb2312_strlen(&$str)
{
$len=strlen($str);
$l=0;
for($i=0;$i<$len;$i++)
{
if(ord(substr($str,$i,1))>=0xa1) $i++;
$l++;
}
return $l;
}
echo join('', array_slice($r[0], 0, 20));恕在下水平底下,请问这是什么意思!我的php水平很低,还请多多指教!
hzqghost(古月血魔) 你好!你写的这个方法我用过,不是很理想!
用正则表达式提取匹配的字符到数组
其中
[\x80-\xff].匹配汉字
. 匹配任意字符
所以
[\x80-\xff]?. 将一个汉字作为一组(两个字节),一个ascii字符也作为一组(一个字节)echo join('', array_slice($r[0], 0, 20));
中
array_slice从数组中取出子数组,有点substr对于字符串的味道
join连接数组成字符串
if(strlen($s)>$len)
$s=substr($s, 0, $len);
$ch='[\x80-\xff]';
if(preg_match("/$ch($ch{2})*$/", $s))
$s=substr($s,0,-1);
return $s;
}