|
|
|
| Помогите, пожалуйста, не разбивается строка в utf-8. Делаю вот так:
<?php
$aa = "ЙЦУКЕ";
$al= mb_split("#[A-Я]#", $aa);
print '<pre>';
print_r($al);
print '</pre>';
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 12:36)
| | Эмм... не понятно, а что Вы хотите сделать? | |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 12:36)
| | А что делают символы # ? Это же не preg-пакет
И таки да, какой эффект хочется достичь? У Вас в строке одни разделители получились.
Я бы сделал preg_match_all() а с аналогичным шаблоном. | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2009 в 19:06)
| | >А что делают символы # ? Это же не preg-пакет
Ограничителями могут быть любые символы, кроме букв, цифр и обратного слеша. Мне понравились решетки. Сколько ни использовала, проблем с ними не было.
Задача у меня такая: составить массив из букв, типа array('Й','Ц','У','К','Е'). Кроме букв, в строке больше ничего нет. Просто идут буквы в ряд. | |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 22:07)
| | неважно, решетки они или еще какие.
Просто эти ограничители специфичны именно для preg-функций.
В других реализациях регулярок их нет в синтаксисе. Голый шаблон. | |
|
|
|
|
автор: 23423 (17.06.2009 в 20:24) |
|
|
для: Лена
(17.06.2009 в 12:36)
| | А я бы использовал preg_split | |
|
|
|
|
|
|
|
для: 23423
(17.06.2009 в 20:24)
| | с каким разделителем? :)
PS. Я априори исхожу из задачи получить массив имеющихся в строке букв. | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2009 в 20:31)
| | >PS. Я априори исхожу из задачи получить массив имеющихся в строке букв.
Чего т я не понимаю.... а чем строка не массив? )
---
а или именно вытащить только буквы? Тогда думаю можно еще сделать наоборот - удаление лишних символов ) | |
|
|
|
|
|
|
|
для: ddhvvn
(17.06.2009 в 21:10)
| | в однобайтовой кодировке - строка не массив набором применимых для объекта функций.
а в ситуации utf-8 - строка не массив сами понимаете чем еще и содержимым. | |
|
|
|
|
автор: 546456 (18.06.2009 в 00:16) |
|
|
для: Trianon
(17.06.2009 в 20:31)
| | с каким разделителем? :)
<?php
$aa = "ЙЦУКЕ";
$letters = preg_split("/([А-ЯЁ])/u", $aa, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($letters);
?>
|
| |
|
|
|
|
автор: 32423 (18.06.2009 в 00:36) |
|
|
для: 546456
(18.06.2009 в 00:16)
| | ... я из другого исхожу, да! | |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 12:36)
| | Хм. Как сказал Trianon, что мешает использовать preg ?
preg_match_all("#[А-Я]#", $aa, $al);
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(17.06.2009 в 21:48)
| | Это не работает.
Берем строку $aa = "ЙЦУКЕ"; и вот что на выходе:
Array
(
[0] => Array
(
[0] => Р
[1] => ™
[2] => Р
[3] => ¦
[4] => Р
[5] => Ј
[6] => Р
[7] => љ
[8] => Р
[9] => •
)
) | |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 22:08)
| | модификатор шаблона u для utf-8 не забываем.
Иначе как preg поймет. что у нас символы в строке мультибайтовые? | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2009 в 22:21)
| | Да, забыл поставить u :) | |
|
|
|
|
|
|
|
для: AcidTrash
(17.06.2009 в 22:27)
| | Добавила я u, и даже решетки убрала:
preg_match_all("/[А-Я]/u", $aa, $al);
А получается все равно:
Array
(
[0] => Array
(
[0] => Р™
[1] => Р¦
[2] => РЈ
[3] => Рљ
[4] => Р•
)
)
Теперь уже количество элементов массива равно количеству букв. | |
|
|
|
|
|
|
|
для: Лена
(17.06.2009 в 22:38)
| | а исходник у Вас в utf-8? ;-) | |
|
|
|
|
 2.8 Кб |
|
|
для: Лена
(17.06.2009 в 22:38)
| | судя по скриншоту, Вы получили искомое. | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2009 в 23:21)
| | Все правильно. Все получилось. Спасибо. | |
|
|
|