Eri*_*est 0 php string if-statement boolean file-get-contents
我正在做一个温和的测试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
Run Code Online (Sandbox Code Playgroud)
你如何让两者都返回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
}
Run Code Online (Sandbox Code Playgroud)
这是正常行为吗?....还有其他人遇到过这种情况吗?
file_get_contents永远不会返回true.它返回文件(或URL)内容或false内容检索失败.
$view_loaded_url1获取值的原因true是表达式的计算方法如下(参见括号):
if(
$view_loaded_url1 = (@file_get_contents($check_url1) && ($view_loaded_url2 = @file_get_contents($check_url2))
)
Run Code Online (Sandbox Code Playgroud)
修复是对运算符进行分组:
if(
($view_loaded_url1 = @file_get_contents($check_url1)) &&
($view_loaded_url2 = @file_get_contents($check_url2))
)
{
Run Code Online (Sandbox Code Playgroud)