【发布时间】:2013-01-21 21:19:17
【问题描述】:
我目前正在使用此正则表达式替换字符串中的所有非字母数字字符并用破折号替换它们
$newString = preg_replace("/[^a-z0-9.]+/i", "-", $string);
这工作正常以下字符串。
$string = "this will work fine";
$newString = "this-will-work-fine";
但是如果字符串有一个非字母数字作为最后一个字符,它将匹配并替换它,正如人们所怀疑的那样。
$string = "How can I fix this?";
$newString = "How-can-I-fix-this-";
我如何改进这个正则表达式以获得以下输出?
$newString = "How-can-I-fix-this";
正则表达式应该适用于两种情况。我知道我可以使用单独的函数修剪字符串,但理想情况下我想使用一个正则表达式。这可能吗?
【问题讨论】:
-
大多数正则表达式实现不允许您定义不同的替换字符串。您通常创建一个模式,然后给出一个(单个!)替换字符串。那么,问题是,您使用的是什么语言(正则表达式实现)?
-
我正在使用php的preg_replace函数
-
第三种情况呢?什么时候开头有非单词字符?
-
@Salman - 请参阅我对第三种情况的 one 正则表达式解决方案的回答。
标签: php regex string preg-replace