PCRE模式修饰符常量,它们的范围是否可见?

时间:2013-01-02 22:58:48

标签: php constants pcre

当阅读PCRE Pattern Modifiers时,我注意到每个修饰符都有一个我熟悉的字符串文字和一个常量,我认为这是一个公平的游戏作为明确的选择。

但是,在提到这些常量时,请说这样

echo PCRE_CASELESS === "i";

我收到此错误

PHP Notice: Use of undefined constant PCRE_CASELESS - assumed 'PCRE_CASELESS'

仔细阅读本手册,我注意到它说了

The names in parentheses refer to internal PCRE names for these modifiers

内部到底是什么?文档列出它们的事实使我认为它们在全球范围内以某种方式可用。

2 个答案:

答案 0 :(得分:2)

文档指的是底层PCRE库内部使用的名称,不能直接从PHP用户空间访问。这些名称只是为了方便起见。

指定修饰符作为实际正则表达式的一部分 - 例如,如果要使用无壳修饰符(i),则使用/regex/i

preg_match('/pattern/i', ...);

请参阅http://php.net/manual/en/regexp.reference.delimiters.php

答案 1 :(得分:1)

pcre-library的内部。它们不会暴露给php userland-code。它们出现在手册中仅用于那些人的信息,例如,他们知道库本身的常量或其他语言实现。所以有人看到“PCRE_CASELESS”并知道,最新情况还没有再读完全文。