使用 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 变量时出错
在ios uiwebview objective-c中检查布尔值是yes还是no时出错