Preg_replace用“ - ”一次

时间:2012-01-26 16:50:09

标签: php preg-replace

我有以下preg_replace替换的符号:

$replace = '/[^a-zA-Z0-9]/';

在我的代码中我使用:

print "<a href='".preg_replace($replace, '-', $p->name)."-pr-".$p->id.".html'>";

以上结果如下:

Apple-iPad-2-Wi-Fi---3G-16GB-White-Tablet---MC982NFA-p-110341697.html

我只需要用一个“ - ”替换上面描述的符号,我需要做什么,如下例所示:

Apple-iPad-2-Wi-Fi-3G-16GB-White-Tablet-MC982NFA-p-110341697.html

4 个答案:

答案 0 :(得分:4)

只需在表达式中添加+即可匹配或更多出现的情况:

$replace = '/[^a-zA-Z0-9]+/';

尽管表达式可以缩短为:

$replace = '/[\W_]+/';

答案 1 :(得分:1)

尝试$replace = '/[^a-zA-Z0-9]+/';

答案 2 :(得分:1)

preg_replace("/\.\s|[^a-zA-Z\.\-0-9]+/", "-", $raw)

它将取代.和白色空间或任何其他字符 - 所以Dot和Space将替换为Single Dash

答案 3 :(得分:0)

添加另一个替代品以替换任何重复 - 单个 - 。

preg_replace("|-+|g", "-");