Разработчику. Сборник рецептов PHP
Задавайте вопросы

Поиск слов

Вернуться назад

Задача

Необходимо выделить все слова в строке.

Решение

Ключ к решению этой задачи в том, чтобы аккуратно определить, что именно мы понимаем под словом. Сформулировав это определение, используйте специальные символьные типы для создания регулярного выражения:

/\S+/       // все, что не является пробельным символом
/[A Z'-]+/i       // все буквы в нижнем и верхнем регистре, апострофы и дефисы

Обсуждение

Простой вопрос «что же такое слово?» неожиданно оказывается довольно сложным. Хотя регулярные выражения, совместимые с Perl, имеют встроенный символьный тип для слова, определяемый символами \w, важно точно понимать, как определяет слово PHP. В противном случае полученный результат может оказаться для вас неожиданным.

Обычно, поскольку это непосредственно следует из определения слова в Perl, символ \w подразумевает все буквы, цифры и символ подчеркивания; это значит, что a_z словом является, а адрес электронной почты, php@example.com, – нет.

В этом рецепте мы рассматриваем только английские слова, но в других языках используется отличный алфавит. Поскольку регулярные выражения диалекта Perl учитывают текущие указания национальной настройки, то изменение в национальной конфигурации может сменить определение буквы, изменяя, таким образом, и определение слова.

Для борьбы с этим можно явным образом перечислить символы, принадлежащие словам, внутри символьного класса. Нестандартные символы можно добавить при помощи кодировки \ddd, где ddd представляет восьмеричный код символа.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ