2017-10-11 76 views
0

在我的preg_replace正则表达式这里用逗号

$string = preg_replace('~[^[:alnum:],]*,[^[:alnum:]]*~', ',', $string); 

我一直在试图相互之间用逗号分开单词替换空格和换行,和它的工作,但后来我尝试了串像

x 
y 
z 

x y z 

来代替空格和换行用所以我写了尝试使用[[:space:]][[:blank:]]但他们更多的是解决空白,但不是换行符,

如何处理新行?我试图用我的新行和空格老更换/[\s,]+/,但还是没有效果,我知道我可以去两个查询像

$string = preg_replace('/[\s,]+/', ',', $string); 
$string = preg_replace('~[^[:alnum:],]*,[^[:alnum:]]*~', ',', $string); 

但我更喜欢它们合并成一个RegEx性能。

+0

发布'$ string'内容,导致你的正则表达式需要','。在当前字符串'x y z' – RomanPerekhrest

+0

@WiktorStribiżew中没有逗号现在可以解决它。 – AXAI

+0

@WiktorStribiżew我实际上认为'|'只能用于匹配两个部分之一'(a | b)'的问题。你真的开始了。 – AXAI

回答

1

尝试以下操作:

preg_replace("'/[^[:alnum:],]*,[^[:alnum:]]*|[\s,]+/'", ",", $string); 

它将取代所有的空格和换行与,逗号。

+0

@WiktorStribiżew你的权利,忘了添加替代。但是,OP应该在这个问题中发布所有相关信息。 – GrumpyCrouton

+0

@WiktorStribiżew检查更新的答案。 – mega6382

+0

@ mega6382 OP已经尝试过第二个代码。它没有为他们工作。看看他们的问题 – GrumpyCrouton