• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_matchで複数一致した場合の処理)

preg_matchで複数一致した場合の処理

このQ&Aのポイント
  • preg_matchを使用して複数のURLパターンに一致する場合の処理について調査しています。
  • 現在の実装では、画像サービスのURLが一つしか変換されず、複数のURLに対応できていません。
  • 質問者は、2つ目の画像のリンク先を正しく設定する方法について助言を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.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;

doomdoom
質問者

お礼

ありがとうございます! 希望通りに表示出来ました。 なるほど、全体を括弧で囲んで$1にすれば変換が出来るのですね。 勉強になりました。ありがとうございました。

関連するQ&A