在我的代码中,我有一个函数用于删除所有带有'-'的non-alphabetic
和non-numeric
字符。但问题是我的regex
只是删除了特殊字符,无论它是'-'。如果输入是
((hai..)how are you?)
将更改为
--hai---how---are-you--
我需要将所有相邻的'-'合并为一个。并删除开始和结束的特殊字符。即以上结果变为
hai-how-are-you
my function is
function to_slug($string)
{
$string = trim($string);
return $string1 = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string)));
}
和我得到一个正则表达式代码组合'-'。
trim(preg_replace('/-+/', '-', $str), '-')
但是我不知道如何把这两者结合起来。请帮助. .提前谢谢大家
试试这个:
function toSlug($string){
$string = trim($string);
return strtolower(trim(preg_replace('/([^0-9a-z]+)/i', '-', $string), '-'));
}
我想这就是你想要的,
<?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
使用标志g
:
/[^A-Za-z0-9]+/g
它将匹配多个非字母数字字符并将它们替换为一个-
。例如
((
hai ..)
how are you ?)
将被-
hai -
how -
are -
you -
这是演示
可能是trim(
,就像上面的答案一样,它也会删除末尾/前导的-