【问题标题】:PHP get_headers() result distinguish [closed]PHP get_headers()结果区分[关闭]
【发布时间】:2019-01-16 00:12:12
【问题描述】:

我使用函数 get_headers($url)。

如果根据http://php.net/manual/en/language.types.boolean.php 一个 e,pty 字符串等于 false。

如何区分返回 get_headers( $url) === false 的函数和空字符串?

或者换句话说,我如何区分错误情况和良好情况?

谢谢

【问题讨论】:

  • get_headers() 返回 FALSE 或数组,而不是字符串。你到底想比较什么?
  • 但如果答案为空怎么办?换句话说,不是数组的所有回复都自动为 FALSE?
  • 您在某种程度上是对的,从技术上讲,结果可能是一个空数组(不是空字符串),这也是“假的”。但是,如果您使用=== 进行比较,就像您自己建议的那样,那没关系,所以您应该没问题。
  • 不会,因为如果结果为空,则使用 get_headers() === false 检查为 TRUE。一定有办法区分错误和无答案?
  • 如果结果为空(一个空数组),那么get_headers() === false就是FALSE。相反,get_headers() == falseTRUE。严格比较运算符 (===) 不允许类型转换。

标签: php error-checking get-headers


【解决方案1】:

如果你想检查 HTTP 状态,使用这个:

<?php
$headers = get_headers($url);
if($headers !== FALSE AND $headers[0] === 'HTTP/1.0 200 OK'){
    print_r($headers);
}else{
    echo 'Error';
}

检查任何 HTTP 状态:

<?php
$headers = get_headers($url);
if($headers !== FALSE){ // or can use "is_array($headers)"
    print_r($headers);
}else{
    echo 'Error';
}

【讨论】:

  • 现在一切都好。我发现 PHP 没有启用扩展“openssl”,因为我 @get_headers() 错误没有出现在任何地方。但总是返回 FALSE 现在它按预期工作:-)
猜你喜欢
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 2021-02-06
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多