在 PHP 中,使用 file_get_contents && file_get_contents returns 不同的值?

In PHP, using file_get_contents && file_get_contents returns different values?

我正在用 file_get_contents 做一个温和的测试。目的是测试 2 urls 是否存在,然后查看它们是否都有特定的 string

类似于:

$check_url1 = "www.example_1.com";
$check_url2 = "www.example_2.com";


if( 
$view_loaded_url1= @file_get_contents($check_url1)&&
$view_loaded_url2= @file_get_contents($check_url2)  )                                                            
{

    var_dump($view_loaded_url1); //RETURNS boolean true 

    var_dump($view_loaded_url2); //Returns the Contents of the page i.e: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Str.....etc

如何使页面的 return 成为 contents 而不是 boolean

因为有第二个if来检查它们是否都包含某个string

类似于:

if(stristr($view_loaded_url1, 'I am the String') && stristr($view_loaded_url2, 'I am the String') {

//....This part cannot go through because $view_loaded_url1 and $view_loaded_url2 are returning different datatype

}

这是正常现象吗?....还有其他人遇到过这种情况吗?

屏幕截图:

file_get_contents 不是检查 url 是否存在的可靠方法。此函数 returns false 每个非 2XX http 响应的布尔值。

您最好编写自己的函数,通过套接字连接到端口 80 上给定的 url 并分析输出或响应连接超时。您也可以使用 cURL。

file_get_contents 从不 returns true。 它 returns 文件(或 URL)内容或 false 如果内容检索失败。

之所以$view_loaded_url1得到值true是因为表达式被计算如下(见括号):

if( 
  $view_loaded_url1 = (@file_get_contents($check_url1) && ($view_loaded_url2 = @file_get_contents($check_url2))
  )                                                            

修复方法是对运算符进行分组:

if( 
  ($view_loaded_url1 = @file_get_contents($check_url1)) &&
  ($view_loaded_url2 = @file_get_contents($check_url2))
  )                                                            
{