1

我正在尝试获取网站的标题。此代码在我的计算机上运行良好,但在服务器上运行不顺畅。在服务器上它无法获取 url 内容。在我的电脑上,它很容易重定向。

<?php
ini_set('max_execution_time', 300);
  $url = "http://www.cricinfo.com/ci/engine/match/companion/597928.html";
  if(strpos( $url, "companion" ) !== false)
  {
    $url = str_replace("/companion","",$url);
  }

$html= file_get_contents($url); 
echo $html;
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');

//get and display what you need:
$title = $nodes->item(0)->nodeValue;

$msg1 = current(explode("|", $title));
$msg=rawurlencode($msg1);
echo $msg;
if(empty($msg))
{
   echo "no data to send";
}
else
{
header("Location:fullonsms.php?msg=" .$msg);
}
exit();
?>

服务器上的输出是这个http://sendmysms.bugs3.com/cricket/fetch.php

4

1 回答 1

3

似乎未启用 fopen 包装器。正如您在 file_get_contents 的 php 文档的注释部分中看到的,allow_url_fopen必须设置为 true 才能使用 file_get_contents 打开 url。尝试在服务器上运行以下命令,看看是否可以使用带有 url 的 file_get_contents。

echo "urls ";
echo (ini_get('allow_url_include')) ? "allowed" : "not allowed";
echo " in file_get_contents.";

如果上面写着“file_get_contents 中不允许使用 url”,那么您需要通过 php.ini、.htaccess 文件、apache 配置或类似的配置来更新设置。也就是说,如果您想继续使用 file_get_contents 访问 url。如果您安装了 php curl 扩展,另一种选择是使用 curl。

PS 我知道这是对 file_get_contents 调用的问题,因为您可以看到他的脚本在设置 $html 变量后对其进行了回显。他在服务器上指向他的脚本的链接没有输出任何 html,这告诉我这是抓取 html 而不是 html 解析器的问题。

于 2013-07-09T20:10:32.037 回答