【问题标题】:Use regex to remove everything but [a-zA-Z0-9-] from string使用正则表达式从字符串中删除除 [a-zA-Z0-9-] 之外的所有内容
【发布时间】:2012-02-27 02:42:03
【问题描述】:

我在这些论坛上搜索过,似乎每个人都对我的问题略有不同。

我有以下字符串To-Wage-a-64-Bit-Coup!,我想使用preg_replace() 删除任何不是字母、数字或连字符[a-zA-Z0-9] 的内容。最终结果是感叹号会被删除。

我不知道需要删除的所有字符,但我知道需要保留的字符。这是为了生成一个对 seo 友好的 url。不确定我需要的是负前瞻还是正前瞻,或者可能使用 preg_match() 之类的其他东西来完成我的目标。

【问题讨论】:

    标签: php regex url-rewriting seo preg-replace


    【解决方案1】:
    preg_replace("([^a-zA-Z0-9-])","",$subject);
    

    [...] 的开头放置一个^ 以取消其效果。

    【讨论】:

    • 完美,谢谢!这是你忘记的简单事情。想太多了。
    【解决方案2】:
    $string = preg_replace("'[^A-Za-z0-9-]'", '', $string);
    

    A-Za-z0-9- 匹配字母、数字和连字符。开头的 ^ 否定了该字符类,因此它匹配除这些字符之外的所有字符。

    如果这是为了创建 URL 友好的字符串,您可能还需要考虑首先将空格转换为连字符,删除可能由此产生的多次连字符,并将字符串转换为小写。

    【讨论】:

      猜你喜欢
      • 2015-01-07
      • 2021-11-09
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      相关资源
      最近更新 更多