2012-02-14 20 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

tip 1:ルート要素の名前の後に変数名を '$ lookup'に変更します。読みやすさが向上します。ヒント2:URLを構築するためにhttp_build_urlまたはsprintfが便利です – 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