php正则表达式,把句号替换成省略号。

希恩凌志 发布于 2012/11/22 16:59
阅读 1K+
收藏 1

求php正则表达式


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


我i怎么写都没有成功。

加载中
0
朱__朱
朱__朱

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

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

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

$string = 'hello。。。';

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


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

0
老陌
老陌
"#(?:。){3,}#"

0
希恩凌志
希恩凌志

引用来自“皮总”的答案

$string = 'hello。。。';

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


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

extension=php_mbstring.dll 我有开啊


怎么就是不行呢。

0
希恩凌志
希恩凌志

引用来自“老陌”的答案

"#(?:。){3,}#"

具体点的代码?
0
希恩凌志
希恩凌志

引用来自“皮总”的答案

$string = 'hello。。。';

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


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

我用

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

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

echo $data; 

一样不行啊。

0
昨日今日明日
昨日今日明日

我复习下

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

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

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

希恩凌志
希恩凌志
大仙和我一样是小菜??
0
常子明
常子明
嗯,学习了~
0
希恩凌志
希恩凌志

在 字符编码是 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; 
}
}

返回顶部
顶部