2

我的问题与类似,但不完全是。

如果我这样做$string = @file_get_contents('http://www.somesite.com/script.php');并且在 script.php 中存在解析错误,$string则获取解析错误的值,而不是 bool false。错误不在本地站点上,而是在远程站点上。

我想我必须进行字符串比较来检查这种情况,但是是否有我应该查找的某些字符串的列表,比如'<b>Parse error</b>:'and '<b>Warning</b>:'?有没有更好的方法来检查远程脚本上的错误?

(我可以控制这两个域,以防您的建议有所不同。)

这是我放在远程服务器上的代码:

  if(!$_SERVER['QUERY_STRING'])
    {
      echo('Can you get me?');
    }
  else
    {
      foreach ($imnotanarray as $fail) //intentionally cause an error
        {
          echo $fail;
        }
    }

这是来自本地服务器的代码

$success=file_get_contents('http://www.tecbrat.com/fgc_responder.php');
$success_header=$http_response_header[0];

$failure=file_get_contents('http://www.tecbrat.com/fgc_responder.php?do=fail');
$failure_header=$http_response_header[0];

$failure2=@file_get_contents('http://www.tecbrat.com/fgc_responder.phxp');
$failure2_header=$http_response_header[0];

echo 'Success is '.$success.'and the header is '.$success_header."<br><br>\n\n";
echo 'Failure is '.$failure.'and the header is '.$failure_header."<br><br>\n\n";
echo 'Another Failure is ';
var_dump($failure2);
echo ' and the header is '.$failure2_header;
4

1 回答 1

1

使用该输出,使用子字符串匹配搜索解析错误确实是您最好的选择。

如果你觉得这很不优雅——而且你有这种感觉是绝对正确的——处理这个问题的正确方法是添加一些错误处理并以更集成的方式表示解析错误,所以如果你的服务通常返回一个 XML 对象或者它返回一个包含错误数据的 XML 对象。

于 2012-08-21T18:56:42.107 回答