- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_matchで複数一致した場合の処理)
preg_matchで複数一致した場合の処理
このQ&Aのポイント
- preg_matchを使用して複数のURLパターンに一致する場合の処理について調査しています。
- 現在の実装では、画像サービスのURLが一つしか変換されず、複数のURLに対応できていません。
- 質問者は、2つ目の画像のリンク先を正しく設定する方法について助言を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
$text = "テキスト http://twitpic.com/xxxxxx http://twitpic.com/yyyyyy http://p.twipple.jp/zzzzzz http://example.com/aaaaaa"; $patterns = array( // twitpic array('/(http:\/\/twitpic[.]com\/(\w+))/', '<img src="http://twitpic.com/show/thumb/$2" width="150" height="150" />'), // ついっぷる フォト array('/(http:\/\/p[.]twipple[.]jp\/([\w]+))/', '<img src="http://p.twipple.jp/show/large/$2" />'), // 通常URL array('/((?<!")https?:\/\/[a-zA-Z0-9\.\/~_?&=%@#!;*:-]+)/', '$1'), ); foreach ($patterns as $pattern) { $text= preg_replace($pattern[0], '<a href="$1" target="_blank">'.$pattern[1]."</a> ", $text); } echo $text;
お礼
ありがとうございます! 希望通りに表示出来ました。 なるほど、全体を括弧で囲んで$1にすれば変換が出来るのですね。 勉強になりました。ありがとうございました。