我有一个php reg表达式,可以删除任何字符串中的任何特殊字符,并用连字符替换该字符。问题是,如果彼此之后有两个特殊字符,我会得到两个连字符。例如,如果我输入文字test@hhh%^
,我会test-hhh--
,或者如果我输入test@hhh%^kkk
,我会获得test-hhh--kkk
。我希望我的表达能给我test-hhh
。我想删除两个相似的连字符以及字符串中的任何尾随连字符。我的代码在这里
$slug = preg_replace('/[^a-zA-Z0-9]/', '-', $slug);
答案 0 :(得分:2)
首先将此正则表达式应用于您的字符串:
$slug = preg_replace('#-{2,}#', '-', $slug);
其次,你应用一个带有连字符的右边修剪(或常规修剪)作为额外参数。
$slug = trim($slug, '-');
答案 1 :(得分:0)
你可以在http://www.regular-expressions.info/repeat.html找到有用的信息,基本上你需要指定一个重复修饰符。