2012-09-26 116 views
-6

我有如下因素的字符串:如何用PHP替换字符串中的特殊字符?

a&b.c'd,e f 

我怎么看起来像

а_b_c_d_e_f 

怎么看起来像正则表达式模式?

在此先感谢!

+5

[你尝试过什么?](http://whathaveyoutried.com/) – Leri

+0

可以使用\ W =>([\ W]) – donald123

+0

你想要什么字符允许?例如小写字母,大写字母,数字,下划线... –

回答

7

它看起来那样简单......

$str = "a&b.c'd,e f"; 
$str = preg_replace('#\W#', '_', $str); 

...但它实际上应该取决于你考虑特殊,因为\W什么字符等同于[^a-zA-Z0-9_](即任何不字母数字或'_')。你的情况可能会或可能不够;如果没有,也许你只需要使用一个字符类在这里:

$str = "a&b.c'd,e f"; 
$str = preg_replace('#[^a-zA-Z0-9_-]#', '_', $str); 

在这个例子中连字符'-'不会和更换。

1

With preg_replace

$regex = "(.*)\W(.*)"; 
$content = "a&b.c'd,e f" 
preg_replace($regex, "_", $content); 
+0

你真的尝试过吗?它不会工作,有两个原因:没有正则表达式分隔符,第一,错误修饰语法,第二。即使它的写法正确,正则表达式本身也是错误的:整个字符串将被一个单一的'_'替换。 – raina77ow

+0

我没有经过测试就从内存中写下来,是的。我无法在一分钟内访问我的服务器。在光明的一面,链接的作品。 – Amelia