14

我使用这些代码行来删除所有标点符号、符号等,正如您在数组中看到的那样,

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

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

但我想让它更简单,因为列出我想在数组中删除的所有东西看起来很愚蠢,因为可能还有一些我想删除的其他特殊字符。

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

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

但它不会删除下划线 -_

删除所有这些东西的最佳方法是什么?正则表达式可以做到吗?

4

2 回答 2

26

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

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

这将替换任何不是字母、数字或空格的内容。

于 2011-01-21T18:46:27.627 回答
13

使用类:

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

将删除当前设置的语言环境不视为“字符”的任何内容。如果它是标点符号,你要消除,班级将是[:punct:]

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

于 2011-01-21T18:47:08.317 回答