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

lau*_*kok 14 php preg-replace special-characters clean-urls

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

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

$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url));
Run Code Online (Sandbox Code Playgroud)

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

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

$pg_url = preg_replace("/\W+/", " ", $pg_url);
Run Code Online (Sandbox Code Playgroud)

但它没有删除得分不足 - _

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

Nat*_*lor 27

根据你想要的贪婪程度,你可以做以下事情:

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

这将取代任何不是字母,数字或空格的内容.


Lin*_*een 13

使用类:

preg_replace('/[^[:alpha:]]/', '', $input);
Run Code Online (Sandbox Code Playgroud)

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

\W表示"任何非单词字符",\w其中包含下划线(_).