2012-02-11 1 views
7

Я не понимаю, почему с /u модификатором \w не работает, и мы должны изменить наше регулярное выражение. Не говорить о \b. w станет эквивалентом p {L} в будущем?

Знаете ли вы, что если новая версия (возможно, php 6?) \w станет такой же, как \p{L} с /u?

Благодаря

+0

Никто не знает, какие изменения у PHP 6 будет (или если он когда-либо будет выпущен) – Mchl

+1

Какие трудности возникают в Unicode для php? – dynamic

+1

Да. Одной из причин, почему разработка PHP 6 была приостановлена ​​на неопределенный срок, была проблема с ее совместимостью на 100% в формате unicode. – Mchl

ответ

1

\w отличается локалями, и как таковые, это на самом деле удобно НЕ захватить странные руны или иероглифы в некоторых случаях в пользу только символы рассматриваемых символов слова в желаемых локало. \w & \p{L} функционально совершенно разные. Настройка локалей - это то, о чем люди должны знать больше. Используйте правильный инструмент для задания, а не кувалдой, чтобы забить 1-дюймовый гвоздь, который заменил бы \w на \p{L}. Многие существующие функции сломались бы, если бы они изменили его. Кроме того, это полностью не связано с постоянными усилиями по обеспечению совместимости с юникодом PHP.

+0

вы уверены? Если вы установили locale в utf-8 \ w, это не будет соответствовать некоторым символам utf8. – dynamic

+0

Что вы подразумеваете под своим языком в 'utf-8'? 'utf-8' - это набор символов, который может использоваться для локали, а не для локали. Каков фактический язык, который вы используете (например, 'de_DE.utf-8'), и какой характер дает вам проблемы? – Wrikken