アプリ版:「スタンプのみでお礼する」機能のリリースについて

正規表現初心者です。

$html='

~略~

<!--{loop|news}-->
<li>{news|month}月{news|day}日 ・ {news|text} </li>
<!--{/loop|news}-->

~略~

';

といった文字列から、
<!--{loop|○○}-->~<!--{/loop|○○}-->
というパターンの部分を検索したいのですが、どのように書けばよいのでしょうか?

ereg("<!--{loop\|([[:alnum:]_]+)}-->()<!--{/loop\|([[:alnum:]_]+)}-->",$html, $matches);

などと書いてみたのですが、真ん中あたりにある、「()」のところをどうかけば良いのかが分かりません。(日本語が混じっているので、どのように書いてよいのか分かりません。)

ご教授お願いいたします。

A 回答 (2件)

単純に.*で良いような気がします


(このままでは、一番広い範囲になるような気もします)

preg_match("/<!--{loop\|(\w+)}-->(.*?)<!--{\/loop\|(\\1)}-->/s",$html, $matches);
にするとか
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考になりました!

お礼日時:2005/05/26 16:10

真ん中の()はいらないような気がします。


これでいいんじゃないでしょうか?
ereg("<!--{loop\|([[:alnum:]_]+)}-->.*?<!--{/loop\|([[:alnum:]_]+)}-->",$html, $matches);
    • good
    • 0
この回答へのお礼

ありがとうございます。
中央の値は、必要だったので、()でくくりました。

お礼日時:2005/05/26 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!