我们在Zend Framework上有一个PHP站点,它有一个后端Postgresql数据库。我们的主要字符编码是UTF-8。
我刚刚查看了我们的错误日志,发现了一个奇怪的条目。我的URL如下:www.mydomain.com/schuhe-für-breite-füsse
然而,有人(或者可能是机器人)试图访问此URL,如下所示:www.mydomain.com/schuhe-f''xc3''xbcr-breite-f''xc3''xbcsse/
这是我第一次看到这样的东西。我的页面上发生了两件事:1) 以上URL是针对我们的CMS查询的。出于某种原因,这很好,我认为Postgresql认为它是字节编码的,然后当试图在我们的数据库中找到这个SEF URL时,将其转换回来。
2) 页面上会发出Ajax请求,并传递相同的SEF URL。这失败了。我相信斜杠会导致Javascript出现问题。
为了避免这种情况,我想解码任何像这样编码的URL。然而,以下代码的快速测试并没有为我解码任何东西:(
$landing_sef_url = $this->_getParam('landing_sef_url');
$utf8=html_entity_decode($landing_sef_url);
$iso8859=utf8_decode($utf8);
$test3 = html_entity_decode($landing_sef_url, 1, "ISO-8859-1");
$test4 = urldecode($landing_sef_url);
echo utf8_decode("$landing_sef_url");
echo "<br/><br/>";
die($landing_sef_url . " -- $utf8 -- $iso8859 <br/>$test3<br/>$test4");
我通过网上的各种帖子找到了上面的内容,但他们都打印出了相同的结果-schuhe-f''xc3''xbcr-breite-f''xc3'' xbcsse
任何帮助都将不胜感激。非常感谢!
这个方法似乎可以满足您的需求:
http://li.php.net/manual/en/function.stripcslashes.php
但是,如果您只是想查看unescape''x##序列,您也可以使用一个相当简单的正则表达式来完成此操作。