使用 PHP 检查和打开 URL 时出错

Posted

技术标签:

【中文标题】使用 PHP 检查和打开 URL 时出错【英文标题】:Errors checking and opening a URL using PHP 【发布时间】:2010-03-28 08:47:10 【问题描述】:

这是一个没有任何错误的脚本

$url="http://yahoo.com";
$file1 = fopen($url, "r");
$content = file_get_contents($url); 


$t_beg = explode('<title>',$content);
$t_end = explode('</title>',$t_beg[1]);
echo $t_end[0];

这是同一个脚本,它使用外观检查多个 url 并获取错误

    for ($j=1;$j<=$i;$j++) 
    if ($x[$j]!='')

    $t_u = "http:".$x[$j];

    $file2 = fopen($t_u, "r");


        $content2 = file_get_contents($t_u); 
        $t_beg = explode('<title>',$content);
        $t_end = explode('</title>',$t_beg[1]);
                echo $t_end[0];

     
  

错误是 警告:fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: No such host is known.在 g:/

这里到底出了什么问题?

【问题讨论】:

取决于 - 您正在检查哪些 URL?我还注意到您添加到 http: 而不是 http:// - 这是故意的,您是否存储 //flibble.com 而不是 flibble.com? 这是有意的任何网址,所有网址都是有效的,有些网址是随机检查的,但没有错误 【参考方案1】:

这里到底出了什么问题

    未经许可获取某人的信息。如果网站愿意放弃一个页面,它将提供一个 RSS。 “检查”不存在的域。

【讨论】:

不是重点@col sharpnel,我想知道错误是什么,谁想要网站信息【参考方案2】:

就在你尝试 fopen 之前:

$file2 = fopen($t_u, "r");

回显$t_u 的值并确保它是正确的。

【讨论】:

做了回声,显示很好【参考方案3】:

我有这个脚本的一个版本正在运行 - 这意味着您的数据可能是错误的。在尝试获取 URL 的内容之前,您可以对域进行 DNS 查找。本质上,您缺少一些错误检查:

<?php

$x = array('//yahoo.com', '//google.com', '//leenux.org.uk');
$i = 3;

for ($j=0;$j<$i;$j++) 
    if ($x[$j]!='')
        $t_u = "http:".$x[$j];

        $content2 = file_get_contents($t_u); 

        if (preg_match("/\\<title\\>(.*)\\<\\/title\\>/", $content2, $matches)) 
            echo $matches[1];
        
    

?>

【讨论】:

【参考方案4】:

我将首先检查此服务器上 php.ini 文件中的 allow_url_fopen 设置。

【讨论】:

如果不允许allow_url_fopen,那么第一个脚本将不会运行。它是一个 127.0.0.1 服务器。

以上是关于使用 PHP 检查和打开 URL 时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 从 URL 获取值并将其发送到 javascript 变量时出错

phpMyAdmin - 会话开始期间出错;

在ios uiwebview objective-c中检查布尔值是yes还是no时出错

安装 Sylius 时出错:“PHP 致命错误:require():无法打开所需的 autoload.php”

在 js 代码中的其他选项卡中打开 url 时出错

一切正常时链接文件时出错