我正在使用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
如何让两者都返回页面的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
}
这是正常的行为吗?....还有其他人遇到过这个吗?
答案 0 :(得分:5)
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))
)
修复方法是对运算符进行分组:
if(
($view_loaded_url1 = @file_get_contents($check_url1)) &&
($view_loaded_url2 = @file_get_contents($check_url2))
)
{
答案 1 :(得分:0)
file_get_contents
不是检查网址是否存在的可靠方法。此函数为每个非2XX http响应返回false
布尔值。
您最好编写自己的函数,它将通过套接字连接到端口80上的给定URL并分析输出或响应连接超时。您也可以使用cURL。