dポイントプレゼントキャンペーン実施中!

あるテンプレートファイルから指定された要素を抜き出したいと思います。

$file_data = "aaa {test} sdasda {nana} ";

こういうデータがあって、「{}」で囲まれた名前を
取得したいと思います。
(例の場合は「test」と「nana」)

どうすればよいでしょうか?

A 回答 (2件)

正規表現得意じゃないのでもっといい案がある


はずですが、とりあえず以下のようにやればできます。

<?PHP
$file_data = "aaa {test} sdasda {nana} ";
preg_match_all("/{.[^}]*}/",$file_data,$out);
print_r($out);
?>

入れ子とか絶対ないとか保証あるんでしょうか?
$file_data = "{test{aaa}} ";
でやると{test{aaa}が帰ってきますけど・・・

この回答への補足

ありがとうございます。

今調べたんですが、入れ子ではないですが{が入ることがあるみたいです。

例:$file_data = "aaa{test}kena{asje{nyan}siw";

こんな感じです>_<

補足日時:2006/06/23 16:30
    • good
    • 0

// 一応動きます。


$str = 'aaa {test} sdasda {nana}';
$ob = '';
for ($i = 0; $i < strlen($str); $i++) {
 if ($str[$i] == '{') {
  $obStart = 1;
  $ob = '';
 } elseif ($str[$i] == '}') {
  echo $ob;
  $obStart = 0;
  $ob = '';
 } elseif ($obStart == 1) {
  $ob .= $str[$i];
 }
}
    • good
    • 0
この回答へのお礼

ありがとうございます。

この方法でも試してみます

お礼日時:2006/06/23 18:00

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