关于搜索引擎优化搜索和HTML字符

时间:2014-06-07 08:53:43

标签: php utf-8 uri slug

我正在开发一个允许用户搜索站点数据库的站点,搜索脚本是自定义的,它是在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');

上述工作正常:

  • UTF Strings。
  • 仅限字符的字符串。
  • 字符串如“Title;)”和“Title :-)”

问题是,它不适用于某些具有“&amp;”的字符转换后的形式,如&lt;,&gt;,&amp;签署等。

是什么让它错了? 请指导。

1 个答案:

答案 0 :(得分:1)

  

是什么让它错了?

您的期望。

  

请指导。

http://tools.ietf.org/html/rfc3986 - 您的案例中的一个好条目可能是2.2. Reserved Characters