Intereting Posts

Проверьте, является ли возвращенный файл XML или нет.

Мне нужно проверить возвращаемое значение вывода веб-сайта. В случае действительных данных для входа в систему он возвращает XML-файл, и в случае недопустимых данных для входа он просто возвращает строку с сообщением «Вы ввели неверный идентификатор».

Моя проблема заключается в том, что я использовал этот код для проверки,

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); if(simplexml_load_string($output)){ echo 'Is XML'; }else{ echo 'Not XML'; } 

Проблема в том, что это проверка и отображение сообщения, но я получаю эти ошибки

Предупреждение: simplexml_load_string () [function.simplexml-load-string]: Entity: строка 1: ошибка парсера: ожидается начальный тег, '<' не найден в

Предупреждение: simplexml_load_string () [function.simplexml-load-string]:

Предупреждение: simplexml_load_string () [function.simplexml-load-string]: ^ in

Есть ли способ разобраться в этих ошибках. Я искал в интернете последний час без всяких успехов.

благодаря

Проверьте, соответствуют ли первые 5 символов <?xml , это должно быть довольно неплохим ключом.

 if(substr($output, 0, 5) == "<?xml") { echo 'Is XML'; } else { echo 'Not XML'; } 
 $result = simplexml_load_string ($data, 'SimpleXmlElement', LIBXML_NOERROR+LIBXML_ERR_FATAL+LIBXML_ERR_NONE); if (false == $result) echo 'error'; 

Также может быть потому, что первая строка возвращаемых данных пустая – попробуйте $output = trim($output) прежде чем вы проанализируете строку как XML.