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


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

回答の条件
  • 1人2回まで
  • 登録:2006/06/05 02:34:11
  • 終了:2006/06/09 02:24:37

回答(5件)

id:ctrl-v No.1

ctrl-v回答回数289ベストアンサー獲得回数152006/06/05 03:17:19

ポイント36pt
$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;
}
id:esecua

上の場合だと <title lang="ja">2006/06/06 02:52:29

id:wellmin No.2

wellmin回答回数93ベストアンサー獲得回数02006/06/05 03:30:13

ポイント5pt

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];

}

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

id:esecua

?

2006/06/05 11:11:02
id:vector_xenon No.3

vector回答回数113ベストアンサー獲得回数42006/06/05 12:36:45

ポイント11pt

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);

}


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

id:chankaz No.4

chankaz回答回数53ベストアンサー獲得回数32006/06/06 01:22:24

ポイント23pt
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);

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

id:vector_xenon No.5

vector回答回数113ベストアンサー獲得回数42006/06/06 16:21:28

ポイント25pt

3の修正です


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

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


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

  • id:ctrl-v
    回答件数が条件に達していたので修正版を書き込めませんでした。

    $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);
    list(,$title)=spliti(">",$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;
    }

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません