PHP - str_replace不按预期方式工作
问题描述:
我有一个名为路径的变量,PHP - str_replace不按预期方式工作
www.google.co.uk%3Fq%3Dde
我正在运行2 str_replace格式正确。
$path = str_replace('%3F', '?', $path);
$path = str_replace ('%3D', '=', $path);
我然后打印输出,但 “%3F” 和 “%3D” 仍然被打印。这做了以前的工作,当我用这些2 str_replace
$path = str_replace('%3F', '?');
$path = str_replace ('%3D', '=');
但drupal 6抛出错误,当我使用这些。
我很新的PHP所以这可能是一些简单的,我很想念
答
不要使用str_replace()
这一点。改为使用urldecode()
,因为这是它的设计目的。
echo urldecode("www.google.co.uk%3Fq%3Dde");
// www.google.co.uk?q=de
没有看到你的代码的其余部分,这是很难说为什么你的前两个str_replace()
呼叫失败。他们正确地形成。
+0
感谢那个迈克尔,不幸的是它仍然没有工作,但我认为这超出了这个问题的范围。你已经明确地表明了我的逻辑中使用str_replace的缺陷! – Undefined 2012-03-09 12:09:21
答
应该是:你缺少$路径str_replace函数的最后两行:
$path = "www.google.co.uk%3Fq%3Dde";
$path = str_replace('%3F', '?', $path);
$path = str_replace ('%3D', '=', $path);
答
使用PHP的urldecode功能。
$url = "www.google.co.uk%3Fq%3Dde";
$path = urldecode($url);
函数str_replace至少需要3个参数。所以str_replace('%3F','?');不能工作,但我不知道,为什么其他str_replace不工作。 – 2012-03-09 12:03:28
这适用于我,你看到什么错误? – 2012-03-09 12:03:51
你的例子是不完整的/错误的,无法重现,请参阅:http://codepad.org/AubDoGw4 - 仔细检查'$ path'包含* really *。 - 如果您因为出错而提出问题,请指明错误。 – hakre 2012-03-09 12:11:25