преобразование & в & для XML в PHP - PullRequest
3 голосов
/ 15 июля 2009

Я создаю XML RSS для своей страницы. И работает с этой ошибкой:

error on line 39 at column 46: xmlParseEntityRef: no name

Очевидно, это потому, что я не могу иметь & в XML ... Что я делаю в моей последней строке поля ...

Как лучше всего очистить все мои $row['field']'s в PHP, чтобы они превратились в &

Ответы [ 5 ]

8 голосов
/ 15 июля 2009

Используйте htmlspecialchars для кодирования только специальных символов HTML &, <, >, " и при необходимости ' (см. Второй параметр $quote_style).

2 голосов
/ 15 июля 2009

Действительно стоит заглянуть в функции dom xml в php. Нужно разобраться, но вы избежите таких проблем.

1 голос
/ 09 ноября 2014

Преобразование зарезервированных символов XML в сущности

 function xml_convert($str, $protect_all = FALSE)
{
    $temp = '__TEMP_AMPERSANDS__';

    // Replace entities to temporary markers so that
    // ampersands won't get messed up
    $str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);

    if ($protect_all === TRUE)
    {
        $str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);
    }

    $str = str_replace(array("&","<",">","\"", "'", "-"),
                        array("&amp;", "&lt;", "&gt;", "&quot;", "&apos;", "&#45;"),
                        $str);

    // Decode the temp markers back to entities
    $str = preg_replace("/$temp(\d+);/","&#\\1;",$str);

    if ($protect_all === TRUE)
    {
        $str = preg_replace("/$temp(\w+);/","&\\1;", $str);
    }

    return $str;
}
1 голос
/ 15 июля 2009

Это называется htmlentities () и html_entity_decode ()

0 голосов
/ 15 июля 2009

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

html_entity_decode($row['field']);

Это займет и вернется к & из & также, если у вас есть & npsb; это изменит это на пробел.

http://us.php.net/html_entity_decode

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...