3

そのため、次のように XML ファイルからいくつかの情報を取得しています。

$url = "http://myurl.blah";
$xml = simplexml_load_file($url);

ただし、XML ファイルが空で、正常に失敗するコードが必要な場合もありますが、PHP エラーをキャッチする方法がわかりません。私はこれを試しました:

if(isset(simplexml_load_file($url)));
{
    $xml = simplexml_load_file($url);
    /*rest of code using $xml*/
}
else {
    echo "No info avilable.";
}

しかし、うまくいきません。そのようにISSETを使用することはできないと思います。エラーをキャッチする方法を知っている人はいますか?

4

4 に答える 4

11
$xml = file_get_contents("http://myurl.blah");
if (trim($xml) == '') {
    die('No content');
}

$xml = simplexml_load_string($xml);

または、おそらくわずかに効率的ですが、エラーを沈黙させるため、必ずしも推奨されるわけではありません。

$xml = @simplexml_load_file($url);
if (!$xml) {
    die('error');
}
于 2012-07-24T15:12:03.287 に答える
1

ここでは使用しないissetでください。

// Shutdown errors (I know it's bad)
$xml = @simplexml_load_file($url);

// Check you have fetch a response
if (false !== $xml); {
    //rest of code using $xml
} else {
    echo "No info avilable.";
}
于 2012-07-24T15:11:16.090 に答える
1
if (($xml = simplexml_load_file($url)) !== false) {
  // Everything is OK. Use $xml object.
} else {
  // Something has gone wrong!
}
于 2012-07-24T15:12:19.917 に答える
0

PHP マニュアルから、エラー処理 (ここをクリック):

var_dump(libxml_use_internal_errors(true));

// load the document
$doc = new DOMDocument;

if (!$doc->load('file.xml')) {
    foreach (libxml_get_errors() as $error) {
        // handle errors here
    }

    libxml_clear_errors();
}
于 2012-07-24T15:20:39.633 に答える