我不确定如何表达这个问题,但我真的希望您能提供帮助。我做了一个搜索引擎,它有两个输入,一个用于您要搜索的输入,一个用于城市和州的很棒的小项目。我正在尝试将str_replace()用于城市和州。用户如何输入城市并说明它是逗号还是无逗号,或者是空格还是双倍空格,它将找到结果,因此我使用str_replace但仅$ strr变量有效的原因以及其他变量不起作用
这就是我所拥有的
$userinput=$request->input('$what');
$city&state=$request->input('$where');
$str = trim(preg_replace('/\s+/',' ', $userinput));
$sty = trim(preg_replace('/\s+/',' ', $userinput));
$strr=str_replace(", ", ",", $city&state);
$strrr=str_replace(", ", ",", $city&state);
$strrrr=str_replace(" ,", " ," ," ,", $city&state);
$stq=str_replace(",", " ", $city&state);
$stw=str_replace(",", " ", $city&state);
$pro=User::Where('tags','Like','%'. $str .'%')->Where(function ($query) use($strrr,$strr,$strrrr,$stq,$stw) {
$query->Where('cityandstate', 'LIKE', '%'. $strr .'%')->orWhere('cityandstate', 'LIKE', '%'. $strrr .'%')->orWhere('cityandstate', 'LIKE', '%'. $strrrr .'%')
->orWhere('cityandstate', 'LIKE', '%'. $stq .'%')->orWhere('cityandstate', 'LIKE', '%'. $stw .'%');
})->orWhere('company_name','Like','%'. $str .'%')->Where(function ($query) use($strrr,$strr,$strrrr) {
$query->orWhere('cityandstate', 'LIKE', '%'. $strr .'%')->orWhere('cityandstate', 'LIKE', '%'. $strrr .'%')->orWhere('cityandstate', 'LIKE', '%'. $strrrr .'%');
})->inRandomOrder()->paginate(20);
答案 0 :(得分:1)
我建议不要使用单个函数来清理输入,而不是使用多个str_replace
,作为一般示例,下面的代码将删除所有前导/尾随或双精度空格和逗号,并替换为单个空格
function clean_input($str) {
return preg_replace('/[ ,]+/', ' ', trim($str));
}
$searches = ['City, State', 'City State', 'City , State', 'City State', ' City state '];
foreach ($searches as $search) {
print cleanInput($search) . PHP_EOL;
}
// Prints.
City State
City State
City State
City State
City state