我有一个博客系统,用户在其中输入标题,并从中输入网址,这是创建网址的功能
function create_slug($string){
$replace = '-';
$string = strtolower($string);
//replace / and . with white space
$string = preg_replace("/[\/\.]/", " ", $string);
$string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
//remove multiple dashes or whitespaces
$string = preg_replace("/[\s-]+/", " ", $string);
//convert whitespaces and underscore to $replace
$string = preg_replace("/[\s_]/", $replace, $string);
//limit the slug size
$string = substr($string, 0, 100);
//slug is generated
return $string;
}
如果用户输入标题“你好,你好”,那么它将变成“你好,你好吗”!
现在,我面临的问题是,如果用户在“ you”之后留出多余的空间,那么它将变成“ hello-how-you-you-”。如何避免这种多余的破折号?
就像Rizier123所说的那样,trim()
将删除输入值前后的空格,请不要忘记trim()
在用破折号替换所有空格之前必须删除空格。
因为:
trim()
将由"hello how are you "
=>"hello how are you"
但是从中"hello-how-are-you-"
可以"hello-how-are-you-"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句