外部サイトのソースを一行づつ読み込んでくれるfgets関数を使って、titleタグがある行に当たったら読み込み処理を中断させた時の備忘録
fgets()を使って外部サイトのmetaタイトルを取得する
<?php
$url = "https://twotone.me/";
// ファイルポインタをオープン
$file = fopen($url, "r");
// metaタイトルの中身を正規表現で取得
$pattern = '/<title>(.*)</title>/';
// ファイルを1行ずつ出力
if($file){
while ($line = fgets($file)) {
if( preg_match($pattern, $line, $result) ){
// 文字コード「utf-8」に変換する
$result = mb_convert_encoding($result,"utf-8","ASCII, JIS, UTF-8, SJIS");
echo '<a href="'.$url.'" target="_blank">'. $result[1] .'</a>';
break;// ループから脱出
}
}
}
// ファイルポインタをクローズ
fclose($file);
?>
Memo:参考
Memo:この勉強用のページで実際に使っているんだけど、やっぱり何回も関数を読み込んでいるからか重いんだよね
やっぱりURLをまとめてcurl_multi_selectで一括で処理したほうがいいのかなぁ…
それでも重かったら自動でmetaタイトル取得するの諦めようかなぁ…
やっぱりURLをまとめてcurl_multi_selectで一括で処理したほうがいいのかなぁ…
それでも重かったら自動でmetaタイトル取得するの諦めようかなぁ…
前回(cURL)、前々回(file_get_contents)と試してきたんだけどどっちもtitleタグを見つけたら読み込み処理を中断するみたいな記述があるサイト見つからなかったから一行づつ読み込みを行うfgets()を使ってみた