2012-02-14 2 views
2

URL 또는 오류 코드를 반환하는 XML 문서가 있습니다. 오류 코드가 반환되면 페이지를 오류 이미지로 리디렉션하고 싶습니다. URL을 반환하도록 SimpleXML을 가져올 수 있지만 오류가 반환되면 조건을 작성하는 방법을 모르겠습니다. 누구든지 제안이 있다면, 좋을 것입니다!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'으로 변경하십시오. 가독성을 향상시킵니다. 팁 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