5

我有 preg_replace 函数,我正在调用该函数并将其放在多行以提高可读性,但*/正则表达式中的字符会混淆注释。如何在不将它们全部移到一行的情况下注释掉所有这些行?

return preg_replace('/.*/',
    'Lorem Ipsum' .
    'More Lorem Ipsum'
    ,
    $foo);
4

1 回答 1

9

您可以使用不同的正则表达式模式分隔符:

return preg_replace('#.*#',
    'Lorem Ipsum' .
    'More Lorem Ipsum'
    ,
    $foo);

编辑: 分隔符是 PCRE(Perl 兼容正则表达式)的一个特性。无需 PHP 配置即可使用不同的分隔符。

正则表达式类引用运算符

...您可以使用任何一对非字母数字、非空白字符作为分隔符。这对于匹配包含“/”的路径名特别有用,以避免 LTS(倾斜牙签综合症)。

引用和类似引用的运算符

非括号定界符前后使用相同的字符,但四种 ASCII 括号(圆、角、方、花)全部嵌套

这些都是有效的:

'/.*/'
'#.*#'
'{.*}' /* Note that '{.*{' would be incorrect. */

查看PHP 的 PCRE 模式文档,了解一个非常好的概述。

于 2012-09-19T15:49:49.973 回答