出于某种原因,这段代码过滤了数字,我不知道为什么会这样做,如果有人可以帮助我,那将不胜感激。
function makeFriendly($string){
$string = strtolower(trim($string));
$string = str_replace("'", '', $string);
$string = preg_replace('#[^a-z\-]+#', '_', $string);
$string = preg_replace('#_{2,}#', '_', $string);
$string = preg_replace('#_-_#', '-', $string);
return preg_replace('#(^_+|_+$)#D', '', $string);
}
如果我现在这样做:
echo makeFriendly('123asd');
它只显示' asd'。
答案 0 :(得分:3)
为什么不应该呢?
$string = preg_replace('#[^a-z\-]+#', '_', $string);
^--- NOT
^^^-- a,b,c,....,z
^--- dash
所以基本上,“任何不是a-z或破折号的东西,用下划线代替”。
答案 1 :(得分:0)
$string = preg_replace('#[^a-z\-]+#', '_', $string);
表示:'用下划线替换范围或连字符中既不是字符的所有内容。
试试这个:
$string = preg_replace('#[^0-9a-z\-]+#', '', $string);
答案 2 :(得分:-1)
您需要删除$string = preg_replace('#[^a-z\-]+#', '_', $string);