2011-01-21 48 views
12

我用几行代码删除所有的标点,符号等,你可以在阵列中看到他们,删除标点符号,符号,变音符号,特殊字符的最佳方法是什么?

$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">"); 

$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url)); 

,但我想更简单,因为它看起来傻乎乎地列出所有的东西我想要在阵列中移除,因为可能会有一些我想移除的其他特殊字符。

我想用下面的正则表达式,

$pg_url = preg_replace("/\W+/", " ", $pg_url); 

,但它并没有在得分删除 - _

什么是去除所有这些东西的最佳方式?正则表达式能做到吗?

+1

您可以删除除[A-Za-z0-9]之外的所有内容;-) – thedom

+0

aw!非常感谢! – laukok

回答

25

根据您希望如何贪婪是,你可以这样做:

$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url); 

这将取代任何不是字母,数字或空间。

+1

非常感谢你。 – laukok

+0

快速和容易:)谢谢 – Goaler444

12

使用类:

preg_replace('/[^[:alpha:]]/', '', $input); 

将消除,这不是审议了当前设置的地点“字符”任何东西。如果是标点符号,你试图消除,该类将是[:punct:]

\W意味着“任何非文字字符”,并且是的\w相反其包括下划线(_)。