我在 php 文件中有一个搜索框,像这样
<form action="/">
<input type="text" name="q">
<input class="submit" type="submit" value="Search" />
</form>
但如果用户在搜索框中输入特殊字符,搜索就会出错。
那么如何在特殊字符被传递给搜索之前用空格替换它?
谢谢你的时间。
正如其他人所指出的,出于安全原因,最好在服务器端执行验证和过滤(例如,用户可以简单地将特殊字符写入 URL 的查询部分)
这样的事情可能会做,它将所有不是字母数字的字符替换为空格;
$q = $_GET['q'];
$q = preg_replace('/[^a-zA-Z0-9]+/', ' ', $q);
<form action="/">
<input type="text" name="q" onkeyup="this.value = this.value.replace(new RegExp('(a|b|d)', 'g'), ' ');">
<input class="submit" type="submit" value="Search" />
</form>
只需更改要替换的字符中的 a|b|d 即可。
或者,您可以从 GET 表单提交更改为 POST
<form action="/" method="post">
<input type="text" name="q">
<input class="submit" type="submit" value="Search" />
</form>
我想您必须使用正则表达式(regex)