- ベストアンサー
DBの<a>タグを[url]タグへ変更する方法
- ブログの移行に伴い、DB内の<a>タグを[url]タグに一括変換したいです。
- UPDATE文を使用し、正規表現を使って変換する方法や、DUMPデータを取得して秀丸エディタで正規表現を使う方法が考えられます。
- 環境はMySQLです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
・どうやって、やるのでしょうか? たぶん、 残念ながら手間がかかりますが、「<a href="○○">△△</a>」をすべて洗い出して 「[url=○○]△△[/url]」との対応を1個ずつ決めてから 1個ずつ処理するしかないです。 というのは、正規表現で検索はできるけれど、正規表現で置き換えはできない場合が多いからです。 (秀丸は使っていないから未確認です。) 例えばエディタで置き換えで正規表現が使えるチェックをいれて(秀丸はチェックなどしなくてもいいかもしれませんが)、この文書で、「正規表現*でき」を「AAA*BB」にでも置き換えしてみてください。 「正規表現で検索はでき」が「AAA*BB」におきかわってしまい、「AAAで検索はBB」とはならないはず。 という前提の下、 selectで、<a href="○○">△△</a>を全部探し出して、リストを作って、 update ・・・ set entry = replace(entry,'<a href="○○">△△</a>','[url=○○]△△[/url]') を複数回実行するのが一番早いかなと思います。 (replaceは大文字小文字を区別しますので注意。whereはつけたほうが早いけどなくても大丈夫) ★!以下はもっと簡単な方法ですが特殊な前提が必要!★ <a href="○○" の○○"の部分が必ず・・・.html"で終わっていて、 他には.html"の文字列がないならば以下の方法が使えるかもしれません。 ※*.htmや*.php、*.jspで終わっているとしても同様。 update ・・・ set entry = replace(replace(replace(entry ,'<a href="'.'[url=') ,'.html">','.html]') ,'</a>','[/url]') の実行。(それぞれの要素を置き換える) ただし、<a>以外の要素で.html">が含まれていると完全にデータが潰れてしまいますので !!!要注意!!! (例えば、<iframe>や<form>等。 <button>もscript埋め込みになっていてたまたま最後が.html">になっていたとかが ありえるので危ない。) 2つ目のreplaceを ,'">',']') とすれば.htmlだろうがなんだろうが<a>はうまくいくのにと思うかもしれませんが このために他が潰れるから使えないということでした。
その他の回答 (1)
FooEditorならグループ置き換えの機能があるので<a href=○○>はそのまま置き換えることができます ただ、<a href="○○">と</a>を同時に置き換えることはできないので、2回に分けて実行する必要がありますが… 例(FooEditorの場合) 検索パターン:<a href="(?<foo>.+)"> 置き換えパターン:[url=$1]
お礼
回答ありがとうございました。 「グループ置き換え機能」というキーワード、参考になりましたー
お礼
回答ありがとうございました。 大変参考になりましたー