我在这些论坛上搜索过,似乎每个人的问题都略有不同。
我有以下字符串To-Wage-a-64-Bit-Coup!
,我希望使用[a-zA-Z0-9]
删除任何不是字母,数字或连字符preg_replace()
的内容。最终结果是将删除感叹号。
我不知道所有需要移除的角色,但我知道需要留下什么。这是为了生成一个seo友好的URL。不确定是否需要消极或积极的前瞻,或者使用像preg_match()
这样的其他东西来实现目标。
答案 0 :(得分:6)
preg_replace("([^a-zA-Z0-9-])","",$subject);
将^
放在[...]
的开头,以否定其效果。
答案 1 :(得分:1)
$string = preg_replace("'[^A-Za-z0-9-]'", '', $string);
A-Za-z0-9-匹配字母,数字和连字符。开头的^否定了该字符类,因此它匹配除了那些字符之外的所有内容。
如果这是用于创建URL友好字符串,您可能还需要考虑首先将空格转换为超量,删除可能由此产生的多次超量运行,并将字符串转换为小写。