movable-type MovableTypeのregex_replace複数使用 最終更新日: 2025年6月22日
feedなどへの出力で、entrybodyを調整したい場合など。
所謂文字置換、正規表現ってものだが、そのregex_replaceは複数書いても最初しか反映されない。
複数書いてmtmlのエラーにならない上に先頭のregex_replaceが効くので、そのルールを知らないと正規表現の間違いなどを疑るのだが、実は1タグ1回ルールがある。
ではそこで複数適用する方法。
<$mt:Entrybody mteval="1" regex_replace='/class="prettyphoto"/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/data-rel="prettyPhoto\[\]"/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<div class="clear">.*?</div>/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/ /g',"" setvar="cont">
<mtvar name="cont" regex_replace='/&/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<span(.*)inline;">/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<span>/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/</span>/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<a(.*)">/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<a(.*)" >/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<\/a>/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<img(.*)" />/g',"" setvar="cont">
<mtvar name="cont" regex_replace='/<p><br />/g',"<p>" setvar="cont">
<mtvar name="cont" regex_replace='/<p><br>/g',"<p>" setvar="cont">
<mtvar name="cont" regex_replace='/<p></p>/g',"" setvar="cont">
regex_replaceは1タグ1回なのでこうするしかない。
feedへの実装したものだが、MT3~MT8までの投稿/また仕様が様々で、feedを読み込む先で改行はいれたかったのでこんなコードになった。
<p><br>を<p>置換、投稿時のミスって感じだからDBで<p><br>は<p>置換のがベターだと思うが、同一変数をmtvar繰り返しでやるイメージ。