web関連
【php】URLから外部サイトtitleを取得してリンクを生成するショートコード
毎度、参照した記事のURLとタイトルをコピペしてリンク作るのが面倒くさいからphpでURLから自動で取得できるようにした
URLから外部サイトtitleを取得してリンクを生成するショートコード
function outbound_link( $atts ) {
// urlからコンテンツを引っ張ってくる
$html = file_get_contents($atts['url']);
// metaタイトルの中身を正規表現で取得
$pattern = '/<title>(.*)</title>/';
// 置換
// ※preg_match(検索するパターン、検索される文字列、検索結果代入)
if( preg_match($pattern, $html, $result) ){
return '<a href="'. $atts['url'] .'" target="_blank">'. $result[1] .'</a>';
}else{
// エラーの時
echo 'No match' . PHP_EOL;
}
}
add_shortcode('ob_link', 'outbound_link');
ob_link url='URLが入る'
※[]が最初と最後に入る
php_eol
はブラウザに反映されない改行コード
とりあえず、↓のリンクで使ってみた
参考
PHPで正規表現を使ってHTMLを強引にほじるコツ #PHP - Qiita
↓心なしかサイトの読み込みが遅くなった気がしたので、file_get_contents
で読み込むデータの最大バイト数指定できるので後で指定しようかな
PHPのfile_get_contentsでファイル・URLの情報を取得する | 侍エンジニアブログ
日本語がURLに入ってるサイトは行けるっぽいけど、文字コードがShift_JISとかUTF-8じゃないと文字化けするね
file_get_contents()で文字化けさせない方法 - とりあえず何でも書く
正規表現についてちゃんと勉強したことなかったから凄い勉強になった(わかったとは言ってない)
classとかつけてデザイン調整とかしようとか考えていたけど、外部リンクの時だけをcssとかで指定できたりするからいらなくね?って作ってて思った
参考記事に一言コメントつける時に使おうかな(再修正予定)
しかも文字列がURLじゃないからかエラー吐く…
記事タイトルの下にエラーでるんだけど一緒に「No match」がそこに出る…
直さないと