在URL地址中使用撇号的PHP问题

时间:2014-03-06 22:30:32

标签: php .htaccess rewrite urlencode apostrophe

我有一个带有搜索表单的网站...当您输入撇号时,第一个结果页面会正确显示,只有名称中包含撇号的结果,但导航栏的链接无法正常工作:链接是例如http://example.com/search.php?q=%27&page=2但是当你点击链接并且页面加载它变成http://example.com/search.php?q=%2527&page=2并且它会混淆结果(是的我可以使用raw_url_decode()但是第一个结果页面不会出现与其他人一致,因为第一个不应该被解码)

我应该使用一些RewriteRules吗?

P.S。如果我只是做标题(“位置:http://example.com/search.php=q=%27”),即使我在'%27'字符串或raw_url_encode()上使用raw_url_decode(),也会出现同样的问题。甚至url_encode()和url_decode()

即使结果的解决方案是在解码中,我想显示我想要显示的URL,并且我实际上无法发送到URL中包含%27的页面,因为它总是变为%2527。 ..所以请告诉我如何更改网址,而不是结果

无论如何,您可以通过访问echidnavideos.it并在搜索栏中搜索'anf然后尝试转到第2页或第3页

来自行查看

1 个答案:

答案 0 :(得分:0)

您可以编写一些PHP代码,将%2527和%27的出现重写为撇号。这应该在代码的开头完成。

$newstring = str_replace("%2527", "\'", $_GET["q"]);
$newstring = str_replace("%27", "\'", $newstring);

所以,这样做:

// if navbar is needed
$q = str_replace("%2527", "\'", $q);
$q = str_replace("%27", "\'", $q);
if($pages > 1){

    $links = 1;
    $a = array();