ブログをMovableTypeで運営していましたが、CMSを使わずにサイトを運用していきたく、
ページを静的ページに作り直しています。
DBから必要な情報(タイトル、投稿日時、カテゴリ、本文)だけを抜き出しました。
これを元に静的ページをPHPで生成してく予定です。
これを機に画像のディレクトリも見直したく、HTMLファイルと同階層に「images」フォルダを作り、そこに画像を集約したいと考えています。
そうなると、これまでの本文に書いていた画像へのパスを書き直す必要が出てきたのですが、元の画像のおさめられているディレクトリが名前も階層の深さもバラバラになっており、これをなんとか相対パスの「images/」に変更したいと考えています。
<img src="http://example.net/xxx/xx/xxxxx/xx/xx/image.png"> <img src="http://example.net/xxx/xx/xx/xx/illust.gif"> <img src="http://example.net/xx/xx/photo.jpg"> ↓ <img src="images/image.png"> <img src="images/illust.gif"> <img src="images/photo.jpg">preg_replaceで行うのではないかと思い、自分なりに調べてみたのですが、
どのように置き換えるのかが見当が付かず、途方に暮れてしまいました。
ひとまず試してみたこととしては
preg_match_all("/<img [^>]src\s=\s*["']?([^"'> ]+)/i", $path, $match);
で、文中のimgタグからsrcの属性値を抽出するところまではできました。
が、この正規表現では、ファイル名まで取れてしまうため、
ファイル名を含まない、画像の親ディレクトリのURLまでを抽出できる正規表現がわかれば
それをつかってpreg_replaceで置き換えができるのではないか?と考えています。
お判りになる方、いらっしゃいましたら
imgタグのsrc属性値内から画像の親ディレクトリまでのURLを
抽出できる正規表現をおしえていただけないでしょうか。
質問文章が稚拙でわかりづらかったらすみません。
また、私のpreg_replaceを使う、という方法自体が的外れでしたら、
ご指摘いただけますと幸いです。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー