• 締切済み

正規表現についての質問です。

正規表現についての質問です。 現在、HTMLのimgタグを使って「/img/jpg/」ディレクトリにある画像ファイルを複数表示しています。 例) <img src="/img/jpg/1111.jpg" > <img src="/img/jpg/mm2222.jpg" > <img src="/img/jpg/kkkkk3333.jpg" > これをそれぞれ、以下のように置換したいと考えています。 例) <a href="http://www.xxxxx.jp/1111.jpg"><img src="/img/jpg/1111.jpg" width="240px"></a> <a href="http://www.xxxxx.jp/mm2222.jpg"><img src="/img/jpg/mm2222.jpg" width="240px"></a> <a href="http://www.xxxxx.jp/kkkkk3333.jpg"><img src="/img/jpg/kkkkk3333.jpg" width="240px"></a> imgタグをリンクタグで囲むのですが、リンク先URLには元々の画像ファイル名が使われています。また、imgタグには「width="240px"」が付加されています。 このような置換をPHP5で行うには、どのような正規表現を使用したらよろしいでしょうか。 宜しくお願い致します。

みんなの回答

  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.1

例にあるHTMLソースはどのようにして出力しているのでしょうか。 ファイルのパスを配列で持っていて、それをループで回しているのでしたら下記の様な形でよいのではないかと思います。 $files = array('/img/jpg/1111.jpg', '/img/jpg/mm2222.jpg', '/img/jpg/kkkkk3333.jpg'); foreach ($files as $path) { $res = preg_match('/[^\/]+$/', $path, $match); if ($res) echo '<a href="http://www.xxx.jp/' . $match[0] . '">'; echo '<img src="' . $path . '" width="240px">'; if ($res) echo '</a>'; } もしimgタグごとPHP内の変数として持っているのでしたら、下記のようになるかと思います。 $tags = array('<img src="/img/jpg/1111.jpg">', '<img src="/img/jpg/mm2222.jpg">', '<img src="/img/jpg/kkkkk3333.jpg">'); foreach ($files as $path) { $res = preg_match('/src="(.*\/([^\/]+))"/', $path, $match); if ($res) echo '<a href="http://www.xxx.jp/' . $match[2] . '">'; echo '<img src="' . $match[1] . '" width="240px">'; if ($res) echo '</a>'; } 上記のどちらとも異なり、単純にファイル名だけを保持しているのであれば、正規表現などは不要です。

関連するQ&A

専門家に質問してみよう