正規表現を使用していくつかの入力を解析しようとしています。入力は次の形式になります。
{somevalue:3}
目的は、「som」(引用符なし)を表示することです。
現在、私は次のことを行っています。
'echo' => array(
'search' => '~\{((?:'.$this->preg['var'].')(?:\.)?)\}~sU',
'replace' => "'.\$this->_get('\\1').'"
)
これは私のテンプレートシステムでうまく機能し、標準変数(つまり「somevalue」)をエコーします。ただし、ユーザーが:delimiterを使用して、出力する文字数を制限できるようにしたいと思います(つまり、{somevalue:3}は'som'を表示します)。
私は試した:
'echo' => array(
'search' => '~\{((?:'.$this->preg['var'].')(?:\.)?:(.*)/)\}~sU',
'replace' => "'.substr(\$this->_get('\\1'),0,\\2).'"
)
しかし、これはうまくいきませんでした。私は正規表現が正直であるとは本当に理解していませんので、どんな助けでも大歓迎です。