对于UTF8,是PHP preg_func/u还是mb_ereg_func?(具有多字节PCRE或多字节POSIX的正则表达式?)

对于UTF8,是PHP preg_func/u还是mb_ereg_func?(具有多字节PCRE或多字节POSIX的正则表达式?),php,regex,utf-8,Php,Regex,Utf 8,所有这些问题都是相似的,(我猜)有一个相似的答案: POSIX已经被弃用(从PHP5.3.0开始)。那么,如果PHP社区更喜欢PCRE正则表达式,为什么我们需要使用POSIX呢 也是POSIX的,仅用于保留mb前缀系列的多字节函数 我已经使用过UTF8字符串,以及UTF8正则表达式(!)的/u选项。为什么不只使用PCRE 关于何时使用preg以及何时使用mb_ereg,有明确的(官方)PHP文档 相关问题(不提供直接答案): @mercator comment表示,mb_ereg函数“是PO

所有这些问题都是相似的,(我猜)有一个相似的答案:

  • POSIX已经被弃用(从PHP5.3.0开始)。那么,如果PHP社区更喜欢PCRE正则表达式,为什么我们需要使用POSIX呢

  • 也是POSIX的,仅用于保留
    mb
    前缀系列的多字节函数

  • 我已经使用过UTF8字符串,以及UTF8正则表达式(!)的
    /u
    选项。为什么不只使用PCRE

  • 关于何时使用
    preg
    以及何时使用
    mb_ereg
    ,有明确的(官方)PHP文档


  • 相关问题(不提供直接答案):

    • @mercator comment表示,
      mb_ereg
      函数“是POSIX ereg函数的多字节版本,但与PCRE preg函数并不完全相同”。那么,为什么要使用它呢?只是因为有些人喜欢POSIX,不喜欢PCRE

    • 是关于2006年的PHP错误


    ERE和Perl regex有不同的语法,工作方式也不同(名称
    ereg
    表明
    mb_ereg
    使用ERE)。我只是不知道
    mb_ereg
    函数族的语法,不过……首先,
    mb_ereg
    是mb扩展的一部分,因此不一定被认为是核心PHP的一部分,因此不一定由相同的人员和弃用过程管理。尽管如此,
    mb_ereg
    似乎支持通过
    mb_internal_编码进行任意编码
    preg.*
    仅支持UTF-8。不过,这只是我的猜测……多亏了这两个!照亮问题和答案。。。我编辑,列举了4个“等价问题”(4个等式)@deceze针对EQ2提出了一个非常好的猜测。NHAHDH关于ERE的评论是针对EQ1的,我想我称之为“ERE”的就是我称之为“POSIX”的东西。@deceze这感觉很奇怪——你现在可能知道这一点,但当时可能没有:请添加答案而不是评论。请参阅“我何时不应发表评论”一节?在…上