この投稿は mingniu66 によって最終編集されました: 2013-11-20 16:32:18
header("Content-Type:text/html;charset=utf-8");
$url = ' http://cm100.net/';
//リモート Web ページのエンコーディングを取得します
function _charset($url){
$text = file_get_contents($url);
$mode = '/charset=(. *)"/ iU';
preg_match($mode,$text,$result);
return $result[1];
}
$charset = _charset($url);// リモート Web ページのエンコーディングを取得します
//上記は公開用です
//1: リモート Web ページのタイトル、$url アドレスを取得します。$charset はエンコーディングの決定に使用されます
function _title($url,$charset){
$ text = file_get_contents($url);
//gb2312 の場合 エンコードで文字化けを処理する
if ($charset == 'gb2312'){
$text = iconv('gb2312','utf-8',$text );
}
$mode = '/
(. *)/iU';
$result[1]; }
echo 'Website title:'.$title = _title($url, $charset); //リモート Web ページのタイトルを取得します
//2: リモート Web ページの紹介を取得します
function _description ($url,$charset){
$text = file_get_contents($url);
//gb2312 エンコード文字化け処理
if ($charset == 'gb2312'){
$text = iconv('gb2312','utf) -8',$text);
}
$mode = '/
/iU'; mode,$text,$result);
return $result[1];
}
echo ' ウェブサイトの紹介: '.$description = _description($url,$charset); // リモート Web ページの紹介を取得します。
?>
私は PHP の初心者で、リモート Web サイトのタイトルと紹介を取得したいと思っています。数日間オンラインで検索して作成しましたが、結果は期待どおりの結果を得ることができませんでした。コードが少し遅い気がします。もっと良い方法があるかどうかはわかりません。
ディスカッションに返信してください (解決策)
関数を合成できます。
ページを何回フェッチする必要がありますか?
http://blog.csdn.net/jdgdf566/article/details/13632111
すべての関数で file_get_contents を使用していることがわかります。もちろん遅いです。
コンテンツを取得する file_get_contents の関数は 1 つだけである必要があり、結果を照合するためにコンテンツを各関数に渡します。
皆さん、ご回答ありがとうございます。4 人が同じ回答をしてくれました。確かに、file_get_contents は何度も調整されています。私はそれを変更するのが難しいかもしれません。