繁体   English   中英

PHP正则表达式替换?

[英]PHP regular expression replace?

我想用逗号在字符串中拆分字母数字 (带空格)和非字母数字

我尝试过这个...

$str = "This is !@#$%^&";
preg_replace("/([a-z0-9_\s])([^a-z0-9_])/i", "$1, $2", $str);

但是我得到了这个结果...

这就是!@#$%^&

如何修复搜索模式以获得此结果?

这是!@#$%^&

谢谢。

您应该在第二组中否定了第一组中的所有内容,如下所示:

preg_replace("/([a-z0-9_\s])([^a-z0-9_\s])/i", "$1, $2", $str);

否则,它也会在空格上分开。

您可能需要多次迭代才能执行此操作。 尝试这个:

$preg = array( "/([\w\s]+)/i", "/([\W\s]+)/i" ):
$replace = array( "\\1, ", "\\1 " );
$result = rtrim( preg_replace( $preg, $replace, $input ) ); // rtrim to get rid of any excess spaces

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM