У меня есть следующий код для замены определенных символов:
<?php
function xmlEscape($string)
{
return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string);
}
$xxx = 'The character & is ampersand and < stands for "less than". ';
echo xmlEscape($xxx)." <p/>";
echo str_replace ('&', '&', $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 в качестве браузера.
Благодарю.
если ты пытаешься так
echo str_replace ('&', 'amp', $xxx."<p/>");
тогда это работает нормально.
"&"
является символом Unicode, и он отображается в браузере, если вы хотите увидеть изменения, проверьте его на firebug.
Я попробовал ваш код, и он работает правильно. Если вы видите исходный код вашего браузера, вы увидите
The character & is ampersand and < stands for "less than". <p>
The character & is ampersand and < stands for "less than". </p>
<p>The letter & is ampersand and < stands for "less than".
Извините … Похоже, его заменили! Но браузер интерпретирует escape-символ и снова отображает его как&».