1

以下を実行すると:

$MATH_REGEX = '/(?=(?<!\\)\$).(.+?)(?<!\\)\$/';
preg_replace_callback($MATH_REGEX, function ($match) {
        $latex_code = $match[0];
        return lx($latex_code); //lx is defined elsewhere
    }, "Test string $a=b$ .");

私はこれを得る:

$ php test.php
PHP 警告: preg_replace_callback(): コンパイルに失敗しました: 行 26 の /home/sbird/public_html/faith/lib/view.php のオフセット 26 に ) がありません

私の正規表現の何が問題になっていますか?

編集:

$ php --バージョン
PHP 5.3.2-1ubuntu4.15 with Suhosin-Patch (cli) (ビルド: 2012 年 5 月 4 日 00:38:52)
Copyright (c) 1997-2009 PHP グループ
Zend Engine v2.3.0、Copyright (c) 1998-2010 Zend Technologies
4

1 に答える 1

1

あなたはエスケープしてい(ます:

/(?=(?<!\\)\$).(.+?)(?<!\\)\$/
                 here:  ^^^

渡された結果の文字列は次のpreg_replace_callbackようになります。

php > $MATH_REGEX = '/(?=(?<!\\)\$).(.+?)(?<!\\)\$/';
php > echo $MATH_REGEX;
/(?=(?<!\)\$).(.+?)(?<!\)\$/
                       ^^ !!!
于 2012-06-07T21:30:26.683 に答える