我想在字符串中用逗号分隔字母数字(带空格)和非字母数字。
我试过这个...
$str = "This is !@#$%^&";
preg_replace("/([a-z0-9_\s])([^a-z0-9_])/i", "$1, $2", $str);
但是我得到了这个结果...
这就是!@#$%^&
如何修复搜索模式以获得此结果?
这是,!@#$%^&
谢谢。
我想在字符串中用逗号分隔字母数字(带空格)和非字母数字。
我试过这个...
$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