1 使用中文substr函数.下面给出一个实际可以使用的函数<?PHP
/*****************************************************
*
* 文件名称: CSubstr.inc
* 作 用: 截取指点长度的中文字符
* 作 者: PHPX.COM--PHP论坛
*
* 参 数: $str : 所要截取的字符
* $start: 开始字符
* $len : 截取长度,汉字
*
*****************************************************/
function csubstr($str,$start,$len)
{
$strlen = strlen($str);
$clen = 0;
for($i = 0; $i < $strlen; $i++,$clen++)
{
if ($clen >= $start+$len)
break;
if(ord(substr($str,$i,1)) > 0xa0)
{
if ($clen >= $start)
$tmpstr .= substr($str,$i,2);
$i++;
}
else
{
if ($clen >= $start)
$tmpstr .= substr($str,$i,1);
}
} return $tmpstr;
}
?>怎么用,应该不用我讲了吧:)2 其实和第一个差不多了,不过,这个没有现成的函数,楼主可以自己写一个.
大体思路是,判断两个点后的数据,将不是点的数据用*来替换.
/*****************************************************
*
* 文件名称: CSubstr.inc
* 作 用: 截取指点长度的中文字符
* 作 者: PHPX.COM--PHP论坛
*
* 参 数: $str : 所要截取的字符
* $start: 开始字符
* $len : 截取长度,汉字
*
*****************************************************/
function csubstr($str,$start,$len)
{
$strlen = strlen($str);
$clen = 0;
for($i = 0; $i < $strlen; $i++,$clen++)
{
if ($clen >= $start+$len)
break;
if(ord(substr($str,$i,1)) > 0xa0)
{
if ($clen >= $start)
$tmpstr .= substr($str,$i,2);
$i++;
}
else
{
if ($clen >= $start)
$tmpstr .= substr($str,$i,1);
}
} return $tmpstr;
}
?>怎么用,应该不用我讲了吧:)2 其实和第一个差不多了,不过,这个没有现成的函数,楼主可以自己写一个.
大体思路是,判断两个点后的数据,将不是点的数据用*来替换.
使用的过程中要注意全角和半角的区别,否则会在结尾出现问号
$ray=explode(".",$ip);
$ip="$ray[0].$ray[1].*.*";呵呵。
$str="这个字符好长呀,^_^";
$Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...
Echo "$Short_Str";
Function csubstr($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
for($i=0;$i<$strlen;$i++,$clen++)
{
if ($clen>=$start+$len)
break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
} return $tmpstr;
}
Function showShort($str,$len)
{
$tempstr = csubstr($str,0,$len);
if ($str<>$tempstr)
$tempstr .= "..."; //要以什么结尾,修改这里就可以.return $tempstr;
}
$ray=explode(".",$ip);
$ip="$ray[0].$ray[1].*.*";呵呵。
-----嗯,这个比我想的要简单:)
$len = 20;
$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");
或
echo strlen($text)<=$len ? $text : iconv_substr($text,0,$len)."....";2、怎样将ip地址的最后一个断或者两个断用*来代替,例如:168.0.*.* 或者168.0.0.*
echo preg_replace("/\.\d+$/",".*","168.0.0.1");
echo preg_replace("/(\.\d+){2}$/",".*.*","168.0.0.1");
$ray=explode(".",$ip);
$ip="$ray[0].$ray[1].*.*";呵呵。
-----嗯,这个比我想的要简单:)
-------------------------
一般我也这么做,但是,感觉唠叨的更简洁,呵呵,不知道是否效率也是更高 感觉上是