関数を実行する preg_replace を使用して bbCode システムを作成しようとしましたが、'e' 修飾子を追加したにもかかわらず、何らかの理由で出力が $1 になっています。
これを解決する方法はありますか?
ソースコード:
function bbcode($value){
$pattern[0] = "/\{register\}(.*?)\{\/register\}/sie";
$replace[0] = register('$1'); //"<pre>$1</pre>";
$bbcoded = preg_replace($pattern, $replace, $value);
return $bbcoded;
}
function register($var) {
echo $var;
}
$content = '
{b}text{/b}
{register}
"register" = "setting",
"name" = "title",
"order" = "1"
{/register}
some text
{register}
"register" = "setting",
"name" = "url",
"order" = "3"
{/register}
some more {b}t{/b}e{b}xt{/b}
{register}
"register" = "setting",
"name" = "description",
"order" = "2"
{/register}
text text
';
$content = bbcode($content);
実際の動作をご覧ください: http://sandbox.onlinephpfunctions.com/code/08459c4fec1919e6089d3849e154ba7a83900fd7