Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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 (strpos():使用替换特殊字符的函数在搜索表单中发出空指针_Php_Preg Replace - Fatal编程技术网

Php (strpos():使用替换特殊字符的函数在搜索表单中发出空指针

Php (strpos():使用替换特殊字符的函数在搜索表单中发出空指针,php,preg-replace,Php,Preg Replace,我有一个搜索表单,在那里我可以得到用户为搜索而写的单词 <li id="search"> <?php if(isset($_POST['search'])){ $search = $_POST['s']; $search = handle($search); header('Location: '.BASE.'/search/'.$search); } ?>

我有一个搜索表单,在那里我可以得到用户为搜索而写的单词

<li id="search">
      <?php
          if(isset($_POST['search'])){
          $search = $_POST['s'];
          $search = handle($search);
          header('Location: '.BASE.'/search/'.$search);
     }
    ?>
    <form id="search" method="post" enctype="multipart/form-data">
       <input name="s" type="text" size="40" placeholder="Search..." />
       <button type="submit" name="search"></button>
    </form>
</li> 
但是使用这个函数,我有一个问题,如果用户搜索%,我的函数会将这个字符替换为,正因为如此 我有一个错误:$searchPos=strpos$result['content'],$search中的空指针

但在handle函数中,我有$string=preg_replace'/[^A-Za-z0-9\-]/',''$string,用于更改空格的特殊字符,而不是空字符


你知道我做错了什么吗?

你不想要$search=urlencode$_POST['s'];?这里有很多选项,可以将它们转换为HTMLentities,然后搜索&foo、filter\u var等:再次感谢DaveRandom。你的解决方案似乎很有效。但现在当我搜索%时,数据库中的所有结果都会出现。你知道为什么会这样吗?
function handle($string) {
   $string = str_replace(' ', '-', $string); 
   $string = preg_replace('/[^A-Za-z0-9\-]/', ' ', $string); 
   return preg_replace('/-+/', '-', $string);
}