上田

likeモディファイア内の変数と正規表現

0

if文のlikeモディファイアに関する質問です。

以下のようにif文のlikeモディファイア内に変数とパターン論理和「|」を使うと上手く動作しませんでした。



~処理~

以下のように数値とパターン論理和を使った場合や変数のみを使った場合は問題ないのですが、上記のように変数とパターン論理和を併用した使い方はできないのでしょうか。

【数値とパターン論理和】
【変数のみ】

正規表現には疎いのですが、その辺が問題なのかと「$」を「\$」などとして試してみましたがダメでした。

解決方法がお解かりになられる方がいらっしゃいましたら、ご教授ください。

どうぞよろしくお願いいたします。

返信(5)

| 返信する
  • すみません。エンコードしてませんでしたので、以下にエンコードしたものを再投稿します。


    if文のlikeモディファイアに関する質問です。

    以下のようにif文のlikeモディファイア内に変数とパターン論理和「|」を使うと上手く動作しませんでした。

    <$mtsetvar name="blog01" value="1"$>
    <$mtsetvar name="blog02" value="2"$>

    <mtif tag="blogid" like="$blog01|$blog02">
    ~処理~
    </mtif>

    以下のように数値とパターン論理和を使った場合や変数のみを使った場合は問題ないのですが、上記のように変数とパターン論理和を併用した使い方はできないのでしょうか。

    【数値とパターン論理和】<mtif tag="blogid" like="1|2">
    【変数のみ】<mtif tag="blogid" like="$blog01">

    正規表現には疎いのですが、その辺が問題なのかと「$」を「\$」などとして試してみましたがダメでした。

    解決方法がお解かりになられる方がいらっしゃいましたら、ご教授ください。

    どうぞよろしくお願いいたします。

    • >上田さん
      こんにちは。

      likeモディファイアにかかわらず、モディファイアに変数を使う場合、変数名とそれ以外のものを混在して書くような方法はできないはずです。
      挙げられた事例だと、以下のようにして、ブログIDを「|」で区切った値を別の変数に代入し、それをlikeモディファイアに指定すれば良いです。

      <$mtsetvar name="blog01" value="1"$>
      <$mtsetvar name="blog02" value="2"$>
      <mt:SetVarBlock name="blogids"><$mt:GetVar name="blog01"$>|<$mt:GetVar name="blog02"$></mt:SetVarBlock>
      <mtif tag="blogid" like="$blogids">
      ~処理~
      </mtif>
      
  • >壱さん
    こんにちは。早速のコメントありがとうございます。
    
    

    早速試してみたのですが、何故か上手くいきませんでした。
    一応、変数が正しく渡っているか<$mt:GetVar name="blogids"$>で確認してみましたが「1|2」と出力されていました。

    理屈的には問題ないはずなのですが、何か他に考えられる原因はありますでしょうか。

    よろしくお願いいたします。

  • >壱さん

    ご指摘のとおりMTSetVarBlockタグのブロックに改行を入れていました。
    改行を取り除いたところ上手く動作しました。

    助かりました。
    ありがとうございます!

返信する


カテゴリグループ

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