PHP - str_replace не работает должным образом

У меня есть переменная с именем 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, поэтому может быть что-то простое, чего мне не хватает.


person Undefined    schedule 09.03.2012    source источник
comment
Для функции str_replace требуется как минимум 3 аргумента. Итак, str_replace('%3F', '?'); не может работать, но я не знаю, почему другие str_replace не работают.   -  person    schedule 09.03.2012
comment
Это работает для меня, какие ошибки вы видите?   -  person Madara's Ghost    schedule 09.03.2012
comment
Ваш пример неполный/неправильный, его невозможно воспроизвести, см.: codepad.org/AubDoGw4 — дважды проверьте, что содержит $path действительно. - Также, если вы задаете вопрос, потому что вы получаете ошибки, пожалуйста, укажите ошибки.   -  person hakre    schedule 09.03.2012


Ответы (4)


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

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

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

person Michael Berkowski    schedule 09.03.2012
comment
Спасибо за это, Майкл, к сожалению, он все еще не работает, но я думаю, что это выходит за рамки этого вопроса. Вы определенно показали недостаток моей логики с помощью str_replace! - person Undefined; 09.03.2012

Использовать:

$path = urldecode($url);

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

person Ingmar Boddington    schedule 09.03.2012

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


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

person Sudhir Bastakoti    schedule 09.03.2012

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

    $url = "www.google.co.uk%3Fq%3Dde";
    $path = urldecode($url);
person heldt    schedule 09.03.2012