Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使使用preg_replace()的函数停止过滤数字?_Php - Fatal编程技术网

Php 如何使使用preg_replace()的函数停止过滤数字?

Php 如何使使用preg_replace()的函数停止过滤数字?,php,Php,出于某种原因,这个代码过滤掉了数字,我不知道为什么它会这样做,如果有人能帮助我,那将不胜感激 function makeFriendly($string){ $string = strtolower(trim($string)); $string = str_replace("'", '', $string); $string = preg_replace('#[^a-z\-]+#', '_', $string); $string = preg_replace('

出于某种原因,这个代码过滤掉了数字,我不知道为什么它会这样做,如果有人能帮助我,那将不胜感激

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”。

为什么不显示

$string = preg_replace('#[^a-z\-]+#', '_', $string);
                          ^--- NOT
                           ^^^-- a,b,c,....,z
                               ^--- dash

所以基本上,“任何不是a-z或破折号的东西,用下划线替换。”

$string=preg_replace(“#[^a-z-]+#',“#',$string)的意思是:“将既不是a-z范围内的字符也不是连字符的所有内容替换为不得分”

试试这个:

$string = preg_replace('#[^0-9a-z\-]+#', '', $string);

您需要删除
$string=preg_replace(“#[^a-z\-]+#'、“#”、$string)

谢谢,但现在它也没有过滤掉空格,除了所有其他东西之外,这也是它需要做的。我很高兴听到:)如果我的答案对你有帮助,请将它标记为答案:DI会,但我发现另一个问题,出于某种原因,该函数在我的index.php页面上工作,但是当我在另一个文档(在另一个映射中)中包含function.php文件时,它不再工作了,它仍然会替换所有的数字和内容。顺便说一句,我确实正确地包含了它。我用一个非常糟糕的修复方法修复了它,只是重命名了该函数并将其放在地图中的另一个文件中似乎是一种解决方法,谢谢。