2012-02-14 72 views
2

我有一個XML文檔,將返回一個URL或錯誤代碼。如果它返回一個錯誤代碼,我想將頁面重定向到一個錯誤圖像。我可以讓SimpleXML返回URL,但如果錯誤返回,我不確定如何編寫條件。如果有人有任何建議,那會很棒!這就是我現在所擁有的:SimpleXML如果條件

<?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 2012-02-14 22:33:26

回答

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 2012-02-14 23:53:04

+0

錯誤是你的朋友:-)如果你不知道錯誤是指什麼的話,那麼你可以確定它們與哪條線相符,並且Google會顯示錯誤信息。如果您無法自己解決問題,並且您無法在Google上找到任何內容,請將問題發回到此處! – cmbuckley 2012-02-15 00:36:44

+0

我懂了!謝謝! – austinhollis 2012-02-15 04:26:14