プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願い致します。

-------------
引用元:http://aaahttp://bbbhttp://ccc
-------------

という文字列がある場合

-------------
引用元:<a href="http://aaa" target="_blank">タイトルaaa</a>、<a href="http://bbb" target="_blank">タイトルbbb</a>、<a href="http://ccc" target="_blank">タイトルccc</a>
-------------

に置き換える方法を考えています。

-------------
<?php
// 対象文字列
$text = '引用元:http://aaahttp://bbbhttp://ccc';
// パターン
$pattern = '/((?:https?|ftp):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:@&=+$,%#]+)/u';

// 置換後の文字列
$replacement = '<a href="\1">\1</a>';
// 置換
$text= preg_replace($pattern,$replacement,$text);
// 出力
echo $text;
?>
-------------



-------------
引用元:<a href="http://aaa" target="_blank">http://aaa</a>、<a href="http://bbb" target="_blank">http://bbb</a>、<a href="http://ccc" target="_blank">http://ccc</a>
-------------

までは行けたのですが、タイトルを取得する方法が分かりません。

http://otapps.net/archives/305
こちらを参考に考えたのですが、先に進めずにいます。

分かる方がいらっしゃいましたら、ご教示ください。
よろしくお願い致します。

A 回答 (3件)

作ってみました。

先ほどの回答で提示したローレベルな処理を実装しています。

Qiita - 文字列中に存在するURLのタイトルを取得して自動リンクする
http://qiita.com/mpyw/items/e0524f199f6e357b780e
    • good
    • 0
この回答へのお礼

オォありがとうございます。

早速参考にさせていただきます。
ありがとうございました。

お礼日時:2014/02/20 19:07

正規表現はこれをご利用ください。



Qiita - 「RFC3986定義の厳密なHTTP URIの正規表現」をPHP用に最適化
http://qiita.com/mpyw/items/1e422848030fcde0f29a

タイトルを全部取得させるとなるとかなり負荷がかかりそうですね…せめて並列処理にしないと…<title>タグの部分を取得したらそれ以降は無視するなどのローレベルな処理が必要になってくるかもです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/07/09 12:23

>タイトルを取得する方法



もし命題どおり実装すると変換処理をするたびにリンク先から
データをもってきて評価する必要があるのでかなり質の悪い処理になりそうです
そもそも実在しないリンクの可能性もあるので、見つからないと
ずいぶん待たされそうな気がします。

現実的な処理としては、定期的にクロールするスケジュールを組んでおき
DBに保持しておくなどでしょうか
    • good
    • 0
この回答へのお礼

親切なご回答ありがとうございます。

お礼日時:2014/07/09 12:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!