删除标点符号,符号,变音符号,特殊字符的最佳方法是什么?

时间:2011-01-21 18:42:21

标签: php preg-replace special-characters clean-urls

我使用这些代码行删除所有标点符号,符号等,因为您可以在数组中看到它们,

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

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

但是我想让它变得更简单,因为在列表中列出我要删除的所有内容看起来很愚蠢,因为我可能会删除一些其他特殊字符。

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

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

但它不会删除得分不足 - _

删除所有这些内容的最佳方法是什么?正则表达式能做到吗?

2 个答案:

答案 0 :(得分:26)

根据您的贪婪程度,您可以执行以下操作:

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

这将取代任何非字母,数字或空格的内容。

答案 1 :(得分:13)

使用课程:

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

将删除当前设置的区域设置不被视为“字符”的任何内容。如果它是标点符号,你试图消除,那么该类将是[:punct:]

\W表示“任何非单词字符”,与\w相反,包含下划线(_)。