10
回答
php正则表达式,把句号替换成省略号。
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

求php正则表达式


把 类似 。。。。。 ,任意超过3个的连续句号替换成 ……


我i怎么写都没有成功。

举报
希恩凌志
发帖于5年前 10回/1K+阅
共有10个答案 最后回答: 5年前

中文句号是多字节的,必须用括号扩起来再使用量词

$string = 'hello。。。';
$new_string = preg_replace("/(。){3,}/", "......", $string);

--- 共有 4 条评论 ---
朱__朱回复 @希恩凌志 : 16进制的要一个字节一个字节地写 5年前 回复
希恩凌志谢谢大侠。 但是还是没有明白为何要写成 \xe3\x80\x82 啊 5年前 回复
朱__朱回复 @希恩凌志 : \x30\02 utf-8的中文句号,是\xe3\x80\x82 5年前 回复
希恩凌志如果 句号用 unicode 表示,应该怎么写啊? 句号的 unicode 十六进制值是 3002 5年前 回复

$string = 'hello。。。';

$new_string = preg_replace("/。{3,}/", "......", $string);


如果不成功说明你没有安装  mb_string 这个模块。

引用来自“皮总”的答案

$string = 'hello。。。';

$new_string = preg_replace("/。{3,}/", "......", $string);


如果不成功说明你没有安装  mb_string 这个模块。

extension=php_mbstring.dll 我有开啊


怎么就是不行呢。

引用来自“皮总”的答案

$string = 'hello。。。';

$new_string = preg_replace("/。{3,}/", "......", $string);


如果不成功说明你没有安装  mb_string 这个模块。

我用

$data='先天下之忧而忧。。。。。。。。。。。';

$pattern='。{3,}';
$data=mb_eregi_replace($pattern,'******',$data);

echo $data; 

一样不行啊。

我复习下

$string = "我要吃红薯我要吃红薯。。。。。。。。。。";

$nstring = preg_replace("/(。){3,}/", "......", $string);

好记住了,下次也会用了。

--- 共有 1 条评论 ---
希恩凌志大仙和我一样是小菜?? 5年前 回复

在 字符编码是 gbk的情况下,需要先转到utf-8,才能成功。

$data='我们。。。。。。。。。';

if (tisUTF8($data)==false) {
$data=iconv('gbk','utf-8',$data);
$data=preg_replace("/(。){3,}/", '……', $data);
$data=preg_replace("/(……){2,}/", '……', $data);
$data=iconv('utf-8','gbk',$data);
} else {
$data=preg_replace("/(。){3,}/", '……', $data);
}

echo $data;

function tisUTF8($dststr) 

if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$dststr) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$dststr) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$dststr) == true) 

return true; 

else 

return false; 
}
}

顶部