• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DBの<a>タグを[url]タグへ変更したいのです)

DBの<a>タグを[url]タグへ変更する方法

このQ&Aのポイント
  • ブログの移行に伴い、DB内の<a>タグを[url]タグに一括変換したいです。
  • UPDATE文を使用し、正規表現を使って変換する方法や、DUMPデータを取得して秀丸エディタで正規表現を使う方法が考えられます。
  • 環境はMySQLです。

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

・どうやって、やるのでしょうか? たぶん、 残念ながら手間がかかりますが、「<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>はうまくいくのにと思うかもしれませんが このために他が潰れるから使えないということでした。

re999
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (1)

noname#185852
noname#185852
回答No.2

FooEditorならグループ置き換えの機能があるので<a href=○○>はそのまま置き換えることができます ただ、<a href="○○">と</a>を同時に置き換えることはできないので、2回に分けて実行する必要がありますが… 例(FooEditorの場合) 検索パターン:<a href="(?<foo>.+)"> 置き換えパターン:[url=$1]

re999
質問者

お礼

回答ありがとうございました。 「グループ置き換え機能」というキーワード、参考になりましたー