表达式删除两个相似的字符和其他尾随字符

时间:2013-02-19 07:45:23

标签: php preg-replace

我有一个php reg表达式,可以删除任何字符串中的任何特殊字符,并用连字符替换该字符。问题是,如果彼此之后有两个特殊字符,我会得到两个连字符。例如,如果我输入文字test@hhh%^,我会test-hhh--,或者如果我输入test@hhh%^kkk,我会获得test-hhh--kkk。我希望我的表达能给我test-hhh。我想删除两个相似的连字符以及字符串中的任何尾随连字符。我的代码在这里

$slug = preg_replace('/[^a-zA-Z0-9]/', '-', $slug);

2 个答案:

答案 0 :(得分:2)

首先将此正则表达式应用于您的字符串:

$slug = preg_replace('#-{2,}#', '-', $slug);

其次,你应用一个带有连字符的右边修剪(或常规修剪)作为额外参数。

$slug = trim($slug, '-');

答案 1 :(得分:0)

你可以在http://www.regular-expressions.info/repeat.html找到有用的信息,基本上你需要指定一个重复修饰符。