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 ドキュメントのメモセクションでわかるように、 file_get_contents で URL を開くには、 allow_url_fopenを true に設定する必要があります。サーバーで次のコマンドを実行して、file_get_contents を URL で使用できるかどうかを確認してください。

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 にアクセスしたい場合です。もう 1 つのオプションは、php curl 拡張機能がインストールされている場合は curl を使用することです。

PS 私はこれが file_get_contents の呼び出しに問題があることを知っています。なぜなら、彼のスクリプトが設定後に $html 変数をエコーすることがわかるからです。サーバー上の彼のスクリプトへの彼のリンクはhtmlを出力しません。これは、これがhtmlパーサーではなくhtmlを取得する際の問題であることを示しています。

于 2013-07-09T20:10:32.037 に答える