SimpleXML IF условие - PullRequest
       5

SimpleXML IF условие

2 голосов
/ 15 февраля 2012

У меня есть XML-документ, который будет возвращать URL-адрес или код ошибки.Если он возвращает код ошибки, я бы хотел перенаправить страницу на изображение ошибки.Я могу заставить SimpleXML вернуть URL, но я не уверен, как написать условие, если ошибка вернется.Если у кого-то есть предложения, это было бы здорово!Вот что у меня сейчас есть:

<?php
error_reporting(0);

$url = 'http://radiocast.co/art/api1/key=KeyHere&album=' . htmlspecialchars($_GET["album"]) . '&artist=' . htmlspecialchars($_GET["artist"]) . '';
$xml = simplexml_load_file($url);

$img = $xml->xpath('//image[@size="large"]');

$large = (string)$img[0];

header("Location:".urldecode($large));

?>

Вот что возвращает XML-документ, если его не удается найти:

<?xml version="1.0" encoding="utf-8"?>
<lookup status="failed">
<error code="3">Art not found</error></lookup>

1 Ответ

4 голосов
/ 15 февраля 2012

Как насчет проверки узла ошибок в вашем XML, и если вы найдете его, то обрабатываете различные ошибки? Если вы не найдете его, вы можете продолжить свою обычную логику.

if (isset($xml->error)) {
    switch ($xml->error['code']) {
        case '3':
            // not found stuff here
            break;

        // other error codes here
    }
} else {
    // success logic here
    $img = $xml->xpath('//image[@size="large"]');
    $large = (string) $img[0];
    header("Location: " . urldecode($large));
}
...