Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mb_split
 
 автор: Лена   (17.06.2009 в 12:36)   письмо автору
 
 

Помогите, пожалуйста, не разбивается строка в utf-8. Делаю вот так:

<?php
          $aa 
"ЙЦУКЕ";
            
$almb_split("#[A-Я]#"$aa);
            print 
'<pre>';
            
print_r($al);
            print 
'</pre>';
?>

  Ответить  
 
 автор: ddhvvn   (17.06.2009 в 18:50)   письмо автору
 
   для: Лена   (17.06.2009 в 12:36)
 

Эмм... не понятно, а что Вы хотите сделать?

  Ответить  
 
 автор: Trianon   (17.06.2009 в 19:06)   письмо автору
 
   для: Лена   (17.06.2009 в 12:36)
 

А что делают символы # ? Это же не preg-пакет
И таки да, какой эффект хочется достичь? У Вас в строке одни разделители получились.

Я бы сделал preg_match_all() а с аналогичным шаблоном.

  Ответить  
 
 автор: Лена   (17.06.2009 в 22:07)   письмо автору
 
   для: Trianon   (17.06.2009 в 19:06)
 

>А что делают символы # ? Это же не preg-пакет
Ограничителями могут быть любые символы, кроме букв, цифр и обратного слеша. Мне понравились решетки. Сколько ни использовала, проблем с ними не было.

Задача у меня такая: составить массив из букв, типа array('Й','Ц','У','К','Е'). Кроме букв, в строке больше ничего нет. Просто идут буквы в ряд.

  Ответить  
 
 автор: Trianon   (17.06.2009 в 22:23)   письмо автору
 
   для: Лена   (17.06.2009 в 22:07)
 

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

  Ответить  
 
 автор: 23423   (17.06.2009 в 20:24)
 
   для: Лена   (17.06.2009 в 12:36)
 

А я бы использовал preg_split

  Ответить  
 
 автор: Trianon   (17.06.2009 в 20:31)   письмо автору
 
   для: 23423   (17.06.2009 в 20:24)
 

с каким разделителем? :)

PS. Я априори исхожу из задачи получить массив имеющихся в строке букв.

  Ответить  
 
 автор: ddhvvn   (17.06.2009 в 21:10)   письмо автору
 
   для: Trianon   (17.06.2009 в 20:31)
 

>PS. Я априори исхожу из задачи получить массив имеющихся в строке букв.
Чего т я не понимаю.... а чем строка не массив? )

---
а или именно вытащить только буквы? Тогда думаю можно еще сделать наоборот - удаление лишних символов )

  Ответить  
 
 автор: Trianon   (17.06.2009 в 21:18)   письмо автору
 
   для: 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, -1PREG_SPLIT_NO_EMPTY PREG_SPLIT_DELIM_CAPTURE);
print_r($letters);

?>

  Ответить  
 
 автор: 32423   (18.06.2009 в 00:36)
 
   для: 546456   (18.06.2009 в 00:16)
 

... я из другого исхожу, да!

  Ответить  
 
 автор: AcidTrash   (17.06.2009 в 21:48)   письмо автору
 
   для: Лена   (17.06.2009 в 12:36)
 

Хм. Как сказал Trianon, что мешает использовать preg ?
preg_match_all("#[А-Я]#", $aa, $al); 

  Ответить  
 
 автор: Лена   (17.06.2009 в 22:08)   письмо автору
 
   для: AcidTrash   (17.06.2009 в 21:48)
 

Это не работает.
Берем строку $aa = "ЙЦУКЕ"; и вот что на выходе:
Array
(
[0] => Array
(
[0] => Р
[1] => ™
[2] => Р
[3] => ¦
[4] => Р
[5] => Ј
[6] => Р
[7] => љ
[8] => Р
[9] => •
)

)

  Ответить  
 
 автор: Trianon   (17.06.2009 в 22:21)   письмо автору
 
   для: Лена   (17.06.2009 в 22:08)
 

модификатор шаблона u для utf-8 не забываем.
Иначе как preg поймет. что у нас символы в строке мультибайтовые?

  Ответить  
 
 автор: AcidTrash   (17.06.2009 в 22:27)   письмо автору
 
   для: Trianon   (17.06.2009 в 22:21)
 

Да, забыл поставить u :)

  Ответить  
 
 автор: Лена   (17.06.2009 в 22:38)   письмо автору
 
   для: AcidTrash   (17.06.2009 в 22:27)
 

Добавила я u, и даже решетки убрала:
preg_match_all("/[А-Я]/u", $aa, $al);

А получается все равно:
Array
(
[0] => Array
(
[0] => Р™
[1] => Р¦
[2] => РЈ
[3] => Рљ
[4] => Р•
)

)

Теперь уже количество элементов массива равно количеству букв.

  Ответить  
 
 автор: ddhvvn   (17.06.2009 в 23:13)   письмо автору
 
   для: Лена   (17.06.2009 в 22:38)
 

а исходник у Вас в utf-8? ;-)

  Ответить  
 
 автор: Trianon   (17.06.2009 в 23:21)   письмо автору
2.8 Кб
 
   для: Лена   (17.06.2009 в 22:38)
 

судя по скриншоту, Вы получили искомое.

  Ответить  
 
 автор: Лена   (18.06.2009 в 11:10)   письмо автору
 
   для: Trianon   (17.06.2009 в 23:21)
 

Все правильно. Все получилось. Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования