PHP - str_replace不按预期方式工作

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所以这可能是一些简单的,我很想念

+0

函数str_replace至少需要3个参数。所以str_replace('%3F','?');不能工作,但我不知道,为什么其他str_replace不工作。 – 2012-03-09 12:03:28

+0

这适用于我,你看到什么错误? – 2012-03-09 12:03:51

+0

你的例子是不完整的/错误的,无法重现,请参阅:http://codepad.org/AubDoGw4 - 仔细检查'$ path'包含* really *。 - 如果您因为出错而提出问题,请指明错误。 – hakre 2012-03-09 12:11:25

不要使用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

用途:

$path = urldecode($url); 

http://php.net/manual/en/function.urldecode.php

应该是:你缺少$路径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);