【问题标题】:PCRE Encoding SupportPCRE 编码支持
【发布时间】:2011-10-03 06:53:28
【问题描述】:

我在PCRE Documentation 看到 PCRE 支持 UTF-8 和 Unicode 通用 类别属性,但我没有看到它说本地编码支持。

如果你说支持 ISO-8859-1: 我在哪里可以找到相关信息?

简而言之:

我比较过 & 我猜 PHP 支持的编码是 windows-1252 而不是 ISO-8859-1 编码。

if(preg_match('/€/',"\x80"))
    echo "Match";

ISO-8859-1 在该位置没有“€”。 Windows-1252 可以。 还是系统的依赖?

那么原生编码 PCRE 支持是什么?

【问题讨论】:

标签: php regex encoding character-encoding pcre


【解决方案1】:

这个例子正好用在regular-expressions.info上来描述混合8bit和unicode的困难

Mixing Unicode and 8-bit Character Codes

简而言之,欧元符号位于所有 Windows 代码页上的 80h 上。您的正则表达式引擎如何处理这可能会有所不同。当您的正则表达式引擎是 8 位并且文本文件使用 Windows 代码页时,它可以工作。
如果您的正则表达式引擎是纯 unicode 引擎,它会将 \x80 读取为 \u0080,这是一个控制代码。

那么,原生编码 PCRE 支持是什么意思?这是系统依赖,您不应该依赖某些代码页。

unicode 的优势在于您可以摆脱所有不同的代码页以及由此产生的所有问题。

所以要使用 unicode 尝试匹配 \x{20AC} 这是欧元符号的 unicode 代码点。

这里是regular-expressions.info about the unicode syntax的概述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    相关资源
    最近更新 更多