Непонятный глюк xml_set_character_data_handler($xml_parser, "characterhandler")

apollox

Новичок
Непонятный глюк xml_set_character_data_handler($xml_parser, "characterhandler")

Всем ДД!

При обработке данных с помощью данной функции происходит глюк, если данные содержат одинарную кавычку.

function characterhandler($parser, $data)
{
$cru_rss['title'] = $data;
}

Если например $data = ''Voestalpine’s BU stake rises to 64.4%"
то на выходе получаем "’s BU stake rises to 64.4%"

То есть все что до кавычки пропадает.

addslashes не помогает...
Можно ли как-то побороть?
Заранее спасибо.
 

slach

Новичок
$cru_rss['title'] .= $data;

дело не в кавычках
а в том что characterhandler вызывается НЕСКОЛЬКО РАЗ
причем это абсолютно регламенированное стандартом SAX поведением SAX парсера
 

apollox

Новичок
Спасибо!

-~{}~ 04.09.07 14:45:

Еще одна непонятка при парсинге RSS с РБК

У них файл такого вида:

____
<item><title>1111</title></item>
<item><title>2222</title></item>
<item><title>3333</title></item>
____

Вызывая characterhandler, я сначала обнуляю массив с данными, которые были получены из предыдущего ITEM, и начинаю заново их записывать в массив

function characterhandler($parser, $data)
{
global $rbc_rss;
if ($rbc_rss['open_tag_name']=='ITEM') $rbc_rss = array();
if ($rbc_rss['open_tag_name']=='TITLE') $rbc_rss['title'] .= $data;
}

function startElement($parser, $name, $attrs)
{
global $rbc_rss;
$rbc_rss['open_tag_name'] = $name;
}

При этом $rbc_rss почему-то не обнуляется, и данные через endElement выводятся как
1111
11112222
111122223333

Но если в файл-источнике данных после item title идет с новой строки:

<item>
<title>1111</title>
</item>
<item>
<title>2222</title>
</item>
<item>
<title>3333</title>
</item>
____

то все ок:

1111
2222
3333

Каким образом тот факт, идет <title>сразу после <item>, или с новой строки, влияет на обнуление $rbc_rss ...

-~{}~ 05.09.07 20:56:

Спасибо, разобрался.
 
Сверху