我正在开发一个允许用户搜索站点数据库的站点,搜索脚本是自定义的,它是在SQL中使用“匹配”的简单案例。
工作流程如下:
用户输入文本(可以是文字+数字+一些特殊符号)。 表单将提交到一个页面,该页面将生成一个SEO URL(http://www.example.com/search/URLENCODE(SEARCHTERM))。
现在我遇到的问题是一些角色在slug中显示,有些不是。我做错了什么?
代码:
在搜索重定向器页面中:
$title=rawurldecode($_GET['searchtext']);
$title=ucfirst(mb_strtolower($title,'UTF-8'));
$title=preg_replace('/[^-\pL.\s0-9- ?\'"+:()<>&]/u', '', $title); //replaces everything else apart from characters and symbols mentioned above.
$title=htmlspecialchars(trim(html_entity_decode($title)));
$slug=rawurlencode($title);
$link="http://www.example.com/search/".$slug;
并在搜索页面中将其作为:
$title=rawurldecode($_GET['searchtext']);
$title=preg_replace('/[^-\pL.\s0-9- ?\'"+:()<>&;]/u', '', $title);
$title=str_replace("%09","",$title);
$title=str_replace("%20"," ",$title);
$title=str_replace("-"," ",$title);
$title=trim($title,' ');
$title=trim($title,'%20');
$title=trim($title,'-');
$title=trim($title,' ');
$title=html_entity_decode($title);
然后SELECT id,表格匹配的标题(标题)对('$ title');
上述工作正常:
问题是,它不适用于某些具有“&amp;”的字符转换后的形式,如&lt;,&gt;,&amp;签署等。
是什么让它错了? 请指导。
答案 0 :(得分:1)