【问题标题】:What is the best way to remove punctuation marks, symbols, diacritics, special characters?删除标点符号、符号、变音符号、特殊字符的最佳方法是什么?
【发布时间】:2011-06-13 08:23:12
【问题描述】:

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

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

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

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

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

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

但它不会删除下划线 - _

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

【问题讨论】:

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

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用类:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多