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);
}