在我的代码中,我有一个功能,可以删除所有non-alphabetic
和non-numeric
字符以及' - '。但问题是我的regex
只是删除了与#39; - #39;相关的特殊字符。所以如果输入是
((hai..)how are you?)
将更改为
--hai---how---are-you--
我需要将所有相邻的' - ' as one。并删除开始和结束的特殊字符。这就是上面的结果
hai-how-are-you
我的功能是
function to_slug($string)
{
$string = trim($string);
return $string1 = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string)));
}
我得到了一个正则表达式代码,用于组合' - '。
trim(preg_replace('/-+/', '-', $str), '-')
但我不知道如何将其结合起来。请帮忙..提前谢谢
答案 0 :(得分:3)
试试这个:
function toSlug($string){
$string = trim($string);
return strtolower(trim(preg_replace('/([^0-9a-z]+)/i', '-', $string), '-'));
}
答案 1 :(得分:1)
我认为这就是你想要的,
<?php
$string = '((hai..)how are you?)';
$pattern = '~[^a-z0-9]+~';
$replacement = '-';
$str1 = preg_replace($pattern, $replacement, $string);
$pat = '~^-+|-+$~';
$rep = '';
echo preg_replace($pat, $rep, $str1);
?> //=> hai-how-are-you
答案 2 :(得分:1)
使用标记g
:
/[^A-Za-z0-9]+/g
它将匹配多个非字母数字字符,并将其替换为一个-
。即。
((
hai ..)
你如何将?)
替换为-
hai -
-
-
-
你是怎样的trim(
可能与-
一样,如上面的答案所示,它也将删除尾随/领先{{1}}