我认为我的代码有问题吗?

时间:2018-09-21 15:39:15

标签: laravel

我不确定如何表达这个问题,但我真的希望您能提供帮助。我做了一个搜索引擎,它有两个输入,一个用于您要搜索的输入,一个用于城市和州的很棒的小项目。我正在尝试将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);

1 个答案:

答案 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