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 测试.php
PHP 警告:preg_replace_callback(): Compilation failed: missing ) at offset 26 in /home/sbird/public_html/faith/lib/view.php on line 26

我的正则表达式有什么问题?

编辑:

$ php --版本
带有 Suhosin-Patch (cli) 的 PHP 5.3.2-1ubuntu4.15(构建时间:2012 年 5 月 4 日 00:38:52)
版权所有 (c) 1997-2009 PHP 集团
Zend Engine v2.3.0,版权所有 (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 回答