str replace — PHP: str_replace не работает для определенных символов

У меня есть следующий код для замены определенных символов:

<?php
function xmlEscape($string)
{
return str_replace(array('&', '<', '>', '\'', '"'), array('&amp;', '&lt;', '&gt;', '&apos;', '&quot;'), $string);
}
$xxx = 'The character & is ampersand and < stands for "less than". ';

echo xmlEscape($xxx)." <p/>";
echo str_replace ('&', '&amp;', $xxx."<p/>");
echo str_replace ( 'character','letter', $xxx);
?>

Результат:

The character & is ampersand and < stands for "less than".
The character & is ampersand and < stands for "less than".
The letter & is ampersand and < stands for "less than".

Только третий работает нормально. Что может быть причиной ? Однажды я использовал этот код в других скриптах, и эта функция работала. Что заставляет функцию работать в одном скрипте и не работать в других? Использование Firefox в качестве браузера.

Благодарю.

0

Решение

если ты пытаешься так

echo str_replace ('&', 'amp', $xxx."<p/>");

тогда это работает нормально.

"&amp;" является символом Unicode, и он отображается в браузере, если вы хотите увидеть изменения, проверьте его на firebug.

1

Другие решения

Я попробовал ваш код, и он работает правильно. Если вы видите исходный код вашего браузера, вы увидите

The character &amp; is ampersand and &lt; stands for "less than".  <p>
The character &amp; is ampersand and &lt; stands for "less than". </p>
<p>The letter &amp; is ampersand and &lt; stands for "less than".
0

Извините … Похоже, его заменили! Но браузер интерпретирует escape-символ и снова отображает его как&».

0