preg_replace"%2520"有空间

时间:2014-07-09 04:56:45

标签: php preg-replace

我的网站上有一个博客页面,用户通过转到这样的网址来编辑帖子... http://www.example.com/blog?edit=blog post here。用于替换%20的空格的脚本应该如此,但现在它用%2520替换空格,现在脚本无法搜索数据库,因为没有名为blog20post20here的帖子。我打算沿着preg_replace的路走下去,所以我试过了......

preg_replace("/%2520/"," ",$_GET['edit']);

但这似乎不起作用。

我从未使用preg_replace(),我刚刚在手册中阅读了它。如果有人可以指出我正确的道路,或者告诉我如何正确使用preg_replace那将是非常棒的。

2 个答案:

答案 0 :(得分:3)

听起来你在生成网址时会在某处双重逃避。 %25是%字符的编码,因此它听起来像从%20到%2520。

顺便说一句,有更好的方法来解码这个网址(例如urldecode()),所以也许preg_replace并不是真的有必要......

编辑:哦,你应该首先使用urlencode来生成网址。

答案 1 :(得分:0)

适用于%2520

<?php echo urldecode(urldecode($_GET['edit'])); ?> 

适用于%20

<?php echo urldecode($_GET['edit']); ?>