好的,我认为此页面上的搜索栏被破坏的原因是因为PHP已更新,并且preg_replace
已弃用。 https://sparklewash.com/
我尝试将preg_replace
函数替换为preg_replace_callback
,但我仍然遇到了一些问题。
原始
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
新版本:
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace_callback('/(^|_)([a-z])/',
create_function ('$matches', 'return strtoupper($matches[2]);'), $string); // Removes special chars.
}
我很抱歉,如果这对你来说很容易,我试着在这里写一篇文章,但我还是比较新的PHP。
编辑:我相信preg_replace并不是因为某些评论而导致其破坏的原因。我在这里提出了一个新问题,以保持主题:Redirect Loop on $_GET Request
答案 0 :(得分:0)
我不推荐您使用的语法,最有可能导致错误,请尝试以下语法。
$result = preg_replace_callback('/(^|_)([a-z])/', function($matches){
return strtoupper($matches[0]);
/*
$matches[0] is the complete match of your regular expression
$matches[1] is the match of the 1st round brackets () similarly for $matches[2]...and so on.
*/
}, $string);
//Also $result will contain the resultant string
你必须将$ match传递给你的回调函数,你也可以单独声明回调,作为一个独立的函数。
function make_upper($matches){
return strtoupper($matches[0]);
}
$result = preg_replace_callback('/(^|_)([a-z])/','make_upper' , $string);
希望我的解决方案适合您,谢谢。 :)