2012-02-14 2 views
2

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

<?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> 
+0

совет 1: переименуйте переменную в '$ lookup' после имени корневого элемента. улучшает читаемость. tip 2: http_build_url или sprintf лучше для создания url – Gordon

ответ

4

Как насчет проверки узла ошибок в вашем 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)); 
} 
+0

Я получаю несколько предупреждений и фатальную ошибку. Я до сих пор не уверен, что делать – austinhollis

+0

Ошибки - ваши друзья :-) выясните, с какими линиями они совпадают, а Google - с сообщением об ошибке, если вы не знаете, о чем идет речь. Если вы не можете решить их самостоятельно, и вы не можете найти что-либо в Google, отправьте свою проблему здесь! – cmbuckley

+0

Я понял! Благодаря! – austinhollis