web関連

【PHP】fgets()を使って外部サイトのmetaタイトルを取得する

2020/05/10

外部サイトのソースを一行づつ読み込んでくれる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);
?>
 

前回(cURL)、前々回(file_get_contents)と試してきたんだけどどっちもtitleタグを見つけたら読み込み処理を中断するみたいな記述があるサイト見つからなかったから一行づつ読み込みを行うfgets()を使ってみた