人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(PHP) 指定したサイトの<title></title>で囲まれた文字又は<TITLE></TITLE>で囲まれた文字を100文字まで取得するfunctionを作ってください。

尚、すべての文字コードにも対応したものをお願いします。

●質問者: esecua
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP サイト 対応 文字コード
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● ctrl-v
●36ポイント
$url="http://www.hatena.ne.jp";//指定のURL
get_title($url);
function get_title($url){
$title = file_get_contents($url);
list(,$title)=spliti("<title>",$title);
list($title,)=spliti("</title>",$title);
$title = substr($title,0,200);//全角で100文字
$encode =mb_detect_encoding($title);
$charcode = "SJIS";//表示するスクリプトの文字コードにあわせて"JIS,UTF-8,EUC-JP,SJIS"に書き換える
$title = mb_convert_encoding($title,$charcode,$encode);//php.iniのmbstringの設定が必要
echo $title;
}
◎質問者からの返答

上の場合だと <title lang="ja">


2 ● wellmin
●5ポイント

function title($url){

$cont = @file_get_contents($url);

$a = explode("<title>", $cont);</p> <p>$b = explode("</title>", $a[1]);


if (!$b[0]){

$a = explode("<TITLE>", $cont);</p> <p>$b = explode("</TITLE>", $a[1]);

}

return $b[0];

}

雑なやり方かもしれませんが・・・・

◎質問者からの返答

?


3 ● vector
●11ポイント

function f($filePath, $enc)

{

$str = file_get_contents($filePath);

preg_match('/(<title>|<TITLE>)(.*)(<\/title>|<\/TITLE>)/', $str, $match);

return mb_substr($match[2], 0, 100, $enc);

}


表示用にインデントは全角になっています。


4 ● chankaz
●23ポイント
function get_title($filename, $encoding) {
$file = file_get_contents($filename);
preg_match('|<title>([^<]*)</title>|i', $file, $matches);
return mb_substr($matches[1], 0, 100, $encoding);
}
$filename = 'http://q.hatena.ne.jp/1149442447';//サイトのURI
$encoding = 'UTF-8';//文字エンコーディング名(ASCII, JIS, UTF-8, EUC-JP, SJIS)
echo get_title($filename, $encoding);

これでいかがでしょうか。


5 ● vector
●25ポイント

3の修正です


preg_match('/(<(title|TITLE)[^>]*>)(.*)(<\/(title|TITLE)>)/', $str, $match);

return mb_substr($match[3], 0, 100);


これで<title element=content>となっていても取れます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ