外部サイトURLからページタイトルを取得する
この記事は2025/5/12に追加修正しました。
PHPで取得。
タイトル前後に改行タブ半角スペースが入る場合に、trim
を使用してそれらを除去する。
$url = file_get_contents('URLを指定');
//タイトル取得$pattern = '/<title>([\s\S]*?)<\/title>/i';preg_match($pattern, $url, $match);$title_name = trim($match[1]);
echo $title_name;
上記だと文字コードがUTF-8
以外の場合文字化けしてしまうので、mb_convert_encoding()
を利用して文字コードを変換する。ついでにURLの取得にcURL関数を利用するなどして改訂したコードが以下。
//cURL関数function curl_get_contents($curl_url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $curl_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_FAILONERROR, true); $result = curl_exec($ch); curl_close($ch); return $result;}
//URLをエンコードしたり$url = htmlspecialchars('URLを指定', ENT_QUOTES, 'UTF-8');//必要であればエンコード処理をする(Wikipediaなど)$url = urlencode($url);$replace = [ '%2F' => '/', '%3A' => ':', '%3D' => '=', '%3F' => '?'];$url = strtr($url, $replace);
//タイトル取得$get_html = curl_get_contents($url);
$pattern = '/<title>([\s\S]*?)<\/title>/i';preg_match($pattern, $get_html, $match);$title_name = trim($match[1]);$title_name = mb_convert_encoding($title_name, 'UTF-8', 'ASCII, JIS, UTF-8, SJIS, EUC-JP'); //文字コード変換
echo $title_name;
CURLOPT_FOLLOWLOCATION
をtrue
にすることで、リクエストURLのヘッダ情報ににLocationがあれば再起的に辿っていく。
mb_convert_encoding()
の第3引数にauto
を指定するとうまく変換されない場合があるので、変換元の文字コードは指定する。