Участник+


Зарегистрирован: Aug 2002
Место проживания: Омск
Публикаций: 261
Статус:  |
Имеется функция парсинга XML данных
PHP:
function xml2array($xml) {
$xmlary = array ();
$ReElements = '/<(w+)s*([^/>]*)s*(?:/>|>(.*?)<(/s*1s*)> )/s';
$ReAttributes = '/(w+)=(?:"|')([^"']*)(:?"|')/';
preg_match_all($ReElements, $xml, $elements);
foreach ($elements[1] AS $ie=>$xx) {
$xmlary[$ie]['name'] = $elements[1][$ie];
if ($attributes = trim($elements[2][$ie])) {
preg_match_all($ReAttributes, $attributes, $att);
foreach ($att[1] AS $ia=>$xx) {
$xmlary[$ie]['attributes'][$att[1][$ia]] = $att[2][$ia];
}
}
$cdend = strpos($elements[3][$ie], '<');
if ($cdend > 0) {
$xmlary[$ie]['text'] = substr($elements[3][$ie], 0, $cdend-1);
}
if (preg_match($ReElements, $elements[3][$ie])) {
$xmlary[$ie]['elements'] = xml2array($elements[3][$ie]);
} elseif (isset($elements[3][$ie])) {
$xmlary[$ie]['text'] = $elements[3][$ie];
}
$xmlary[$ie]['closetag'] = $elements[4][$ie];
}
return $xmlary;
}
И есть XML данные для парсинга
code:
Всё работает замечательно, пока в XML данных не встречаются спец символы "/" или ">"
Пробовал переписывать первое регулярное выражение на предмет отрицания всего подшаблона (?!(/> ).*), но в таком случае парсинг не корректно происходит
Как вот эту функцию переписать, что бы нормально обрабатывались данные, в которых есть символы "/" и/или ">" ?
__________________
f9ffe3323e79b2a558b92af5b4039e20
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|