Buteo
[CDR/DVP]
обрезает строки...
при парсинге xml обрезаються строчки, в которых есть знак амперсанд &
кусок пхп
кусок xml (as is): <src>.PSD;<br>.HTML;<br></src>
собсвтенно почему? ведь < > и &amp; -- допустимые символы...
как лечиться это?
-~{}~ 03.09.04 14:46:
оказываеться как только доходит до & вызываеться опять функция characterData , но вот только символы < > и &amp автоматом заменяються
string(0) ""
string(5) ".PSD;"
string(6) ".PSD;&"
string(11) ".PSD;<br"
string(12) ".PSD;<br>"
string(18) ".PSD;<br>.HTML;"
string(19) ".PSD;<br>.HTML;<"
string(21) ".PSD;<br>.HTML;<br"
string(22) ".PSD;<br>.HTML;<br>"
-~{}~ 03.09.04 21:33:
обнаружил, что по каким-то непонятным причинам может вызываться подряд characterData несколь раз и разбивать данные на части??
вот если такое распарсить:
<url>http://somesite.com/some/page/myimg1.jpg</url>
<url>http://somesite.com/some/page/myimg2.jpg</url>
...
<url>http://somesite.com/some/page/myimgN.jpg</url>
получим:
string(40) "http://somesite.com/some/page/myimg1.jpg"
string(40) "http://somesite.com/some/page/myimg2.jpg"
string(22) "http://somesite.com/so"
string(18) "me/page/myimg3.jpg"
string(40) "http://somesite.com/some/page/myimg4.jpg"
...
вообщем, если кто знает почему такие вещи происходят, плиз, объясните...
p.s. проверял на win2000 и на Debian
-~{}~ 06.09.04 12:50:
такс... со вторым разобрался: потому что я считываю по 4096 байт:
p.s. какой-то у меня монолог получаеться
p.s.s. с первым не разобрался, но вообщем сделал, что всё работает... всем пасиба...
при парсинге xml обрезаються строчки, в которых есть знак амперсанд &
кусок пхп
PHP:
$xml_parser = xml_parser_create();
xml_set_object($xml_parser, &$this);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
// ...
function characterData($parser, $data)
{
var_dump($data);
// выводит string(5) ".PSD;"
}
собсвтенно почему? ведь < > и &amp; -- допустимые символы...
как лечиться это?
-~{}~ 03.09.04 14:46:
оказываеться как только доходит до & вызываеться опять функция characterData , но вот только символы < > и &amp автоматом заменяються
string(0) ""
string(5) ".PSD;"
string(6) ".PSD;&"
string(11) ".PSD;<br"
string(12) ".PSD;<br>"
string(18) ".PSD;<br>.HTML;"
string(19) ".PSD;<br>.HTML;<"
string(21) ".PSD;<br>.HTML;<br"
string(22) ".PSD;<br>.HTML;<br>"
-~{}~ 03.09.04 21:33:
обнаружил, что по каким-то непонятным причинам может вызываться подряд characterData несколь раз и разбивать данные на части??
вот если такое распарсить:
<url>http://somesite.com/some/page/myimg1.jpg</url>
<url>http://somesite.com/some/page/myimg2.jpg</url>
...
<url>http://somesite.com/some/page/myimgN.jpg</url>
получим:
string(40) "http://somesite.com/some/page/myimg1.jpg"
string(40) "http://somesite.com/some/page/myimg2.jpg"
string(22) "http://somesite.com/so"
string(18) "me/page/myimg3.jpg"
string(40) "http://somesite.com/some/page/myimg4.jpg"
...
вообщем, если кто знает почему такие вещи происходят, плиз, объясните...
p.s. проверял на win2000 и на Debian
-~{}~ 06.09.04 12:50:
такс... со вторым разобрался: потому что я считываю по 4096 байт:
PHP:
while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
{
p.s.s. с первым не разобрался, но вообщем сделал, что всё работает... всем пасиба...