Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Узнать или в строке xml


Автор: serezhka1986 16.8.2014, 14:41
Добрый день!
Извините за, возможно, глупый вопрос...
Есть строка, как узнать что в ней находится содержимое xml?
Спасибо!

Автор: ksnk 16.8.2014, 15:05
serezhka1986, xml настоящий или кусок разметки?
Настоящий начинается с тега <?xml version="1.1" encoding="UTF-8" ?> или похожим. 
Кусок разметки - тоже что и html - текст, окруженный тегами. Есть теги - вероятно xml  smile  

Автор: serezhka1986 16.8.2014, 15:10
ksnk, не-не, в строку записан настоящий xml
Код

<?xml version="1.0" encoding="utf-8"?>
 <response>
   ...
 </response>

Автор: ksnk 16.8.2014, 16:54
Дык, проверяешь регуляркой. 
Если нужно проверить корректность - http://php.net/manual/ru/simplexml.examples-basic.php

Код

try {
   $xml = new SimpleXMLElement($xmlstr);
} catch (Exception $e) {
   // handle the error
   echo '$xmlstr is not a valid xml string';
}

Автор: serezhka1986 16.8.2014, 18:02
ksnk, наверное копну в сторону регулярки, хоть я в ней и не особо силен.  smile  Спасибо!)

Автор: ksnk 16.8.2014, 21:36
А что за задача? Если нужно много и быстро проверить - strpos
Код

if(false!==strpos($xmlstr,'<?xml')) echo 'yes';// похоже на xml
else echo 'no';// не очень похоже

Регулярки - это немного помедленнее, хотя тоже довольно эффективно
Код

if(preg_match('/<\?xml(?:\s+(?:version|encoding)="[-\.\w]+")+\s*\?>/',$xmlstr)) 
    echo 'yes';// похоже на xml
else 
    echo 'no';// не очень похоже

А вот надежнее, хотя и медленнее - SimpleXml.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)