【问题标题】:\w will become equivalent to \p{L} in a future?\w 将来会等同于 \p{L} 吗?
【发布时间】:2012-02-11 16:30:32
【问题描述】:

我不明白为什么 /u 修饰符 \w 不起作用,我们必须更改我们的正则表达式。不谈\b

所以有人知道在新版本上(可能是 php 6?)\w 是否会与 \p{L}/u 相同?

谢谢

【问题讨论】:

  • 没有人知道 PHP 6 会有什么变化(或者是否会发布)
  • unicode for php 有哪些困难?
  • 是的。 PHP 6 开发被无限期搁置的原因之一是难以使其 100% 兼容 unicode。
  • 那个,而且开发 PHP 的人非常少(与使用 PHP 开发的大众相比)
  • 然而,尽管批评 PHP 很有趣,但 \p{L} 和 /u 问题与 PHP 无关,与 PCRE 库有关... PHP简单地使用 PCRE 库,就像 Perl 或 Python 或 Ruby 或许多其他语言一样,都受到相同的限制

标签: php regex unicode pcre


【解决方案1】:

\w 因语言环境而异,因此,在某些情况下不捕获奇怪的符文或象形文字实际上很方便,而只支持在所需语言环境中被视为单词字符的字符。 \w\p{L} 在功能上完全不同。配置语言环境是人们应该更加注意的。使用正确的工具完成工作,而不是用大锤敲击 1 英寸的钉子,用 \w 代替 \p{L} 即可。如果他们确实更改了许多现有功能,它们将会中断。此外,这与使 PHP unicode 兼容的持续努力完全无关。

【讨论】:

  • 你确定吗?如果您将语言环境设置为 utf-8 \w 将不匹配某些 utf8 字符
  • 将语言环境设置为utf-8 是什么意思? utf-8 是一个字符集,可用于区域设置,而不是区域设置。您使用的实际语言环境是什么(例如de_DE.utf-8),什么字符给您带来了问题?
猜你喜欢
  • 2016-10-25
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2014-10-24
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多