PHP - str_replace не работает должным образом - PullRequest
1 голос
/ 09 марта 2012

У меня есть переменная с именем path, которая является URL-адресом, например

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, так что это может быть что-то простое, что япропал без вести

Ответы [ 4 ]

8 голосов
/ 09 марта 2012

Не используйте str_replace() для этого.Вместо этого используйте urldecode(), поскольку это является его предназначением.

echo urldecode("www.google.co.uk%3Fq%3Dde");
// www.google.co.uk?q=de

Не видя остальную часть вашего кода, трудно сказать, почему ваши первые два вызова str_replace() не прошли,Они правильно сформированы.

3 голосов
/ 09 марта 2012

Использование:

$path = urldecode($url);

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

0 голосов
/ 09 марта 2012

Используйте функцию PHP urldecode.

    $url = "www.google.co.uk%3Fq%3Dde";
    $path = urldecode($url);
0 голосов
/ 09 марта 2012

Должно быть: Вам не хватает $ path в str_replace для двух последних строк:


$path = "www.google.co.uk%3Fq%3Dde";
$path = str_replace('%3F', '?', $path); 
$path = str_replace ('%3D', '=', $path);

...