Cakephp でビュー コードを合理化するために作成した一種のミニ構文解析があります。基本的に、データをループして手動で編集するのではなく、データセットと (オプションで) データをフォーマットする方法の一連のオプションを指定すると、テーブル ヘルパーを作成しました。
これにより、ユーザーは好きなだけ複雑にすることも単純にすることもでき、非常に強力になります。ただし、これを実現するには、単純な構文解析を作成する必要がありました。簡単な例として、ユーザーは次のようにします。
$this->Table->data = $userData;
$this->Table->elements['td']['data'] = array(
'{:User.username:}',
'{:User.created:}' => array('Time::nice')
);
echo $this->Table->render();
そして、テーブルをレンダリングすると、次が生成されます。
<table>
<tbody>
<tr><td>rich97</td><td>Sun 21st 02:30pm</td></tr>
</tbody>
</table>
問題が発生すると、次のように中かっこをネストしようとします。
{:User.levels.iconClasses.{:User.access:}:}
とにかく、最初のラウンドで最も内側のブラケットしか取得できず、一致がなくなるまでループしますか? それとも一気にやりますか?または、strpos を使用したほうがよいでしょうか?
これが私の正規表現です。
'/\{\:([^}]+)\:\}/'