jdash2000

replaceとregex_replaceのグローバルモディファイアについて

0

私の環境だけか、認識違いかもしれませんが、
グローバルモディファイアのreplaceやregex_replaceで「<」「>」だけを検索しようとすると、検索・置換されません。

例:


<$mt:PageBody replace="<","&lt;"$>
<$mt:PageBody regaex_replace="/</g","&lt;"$>

何かおかしなことをやっていますか?
なお、「"/< ?(.+?) ?>/g」みたいな検索は可能でしたので単純に「<」が悪いわけではないように思えます。

返信(3)

| 返信する
  • 一度変数に入れて、
    <MTSetVarBlock name="before">hoge</MTSetVarBlock>
    <MTSetVarBlock name="after">hogehoge</MTSetVarBlock>
    <$mt:PageBody regaex_replace="$before","$after"$>
    じゃなかったでしょうか。はずしてたら、ごめんなさい。
    • 返信ありがとうございます。
      変数に入れてもダメでした。

      エスケープしたらいいのかな?と思って「\<」ともしてみましたが、ダメでした。

    • 自己解決しました。
      「<」を「[\x00\x3C]」という文字コードの番号を指定することで「<」と結果的に指定できるようです。

      なので「/[\x00\x3C]/g」などとregex_replaceの引数に指定すれば正常に変換できるようでした。

返信する


OpenID対応しています OpenIDについて