我使用这些代码行删除所有标点符号,符号等,因为您可以在数组中看到它们,
$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">");
$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url));
但是我想让它变得更简单,因为在列表中列出我要删除的所有内容看起来很愚蠢,因为我可能会删除一些其他特殊字符。
我想过使用下面的正则表达式,
$pg_url = preg_replace("/\W+/", " ", $pg_url);
但它不会删除得分不足 - _
删除所有这些内容的最佳方法是什么?正则表达式能做到吗?
答案 0 :(得分:26)
根据您的贪婪程度,您可以执行以下操作:
$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url);
这将取代任何非字母,数字或空格的内容。
答案 1 :(得分:13)
使用课程:
preg_replace('/[^[:alpha:]]/', '', $input);
将删除当前设置的区域设置不被视为“字符”的任何内容。如果它是标点符号,你试图消除,那么该类将是[:punct:]
。
\W
表示“任何非单词字符”,与\w
相反,包含下划线(_
)。