使用正则表达式从字符串中除去[a-zA-Z0-9-]以外的所有内容

时间:2012-02-05 02:01:25

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

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

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

我不知道所有需要移除的角色,但我知道需要留下什么。这是为了生成一个seo友好的URL。不确定是否需要消极或积极的前瞻,或者使用像preg_match()这样的其他东西来实现目标。

2 个答案:

答案 0 :(得分:6)

preg_replace("([^a-zA-Z0-9-])","",$subject);

^放在[...]的开头,以否定其效果。

答案 1 :(得分:1)

$string = preg_replace("'[^A-Za-z0-9-]'", '', $string);

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

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