[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: кириллица в utf8
GiGnet
Не получается обработать кириллицу в многобайтной кодировке. Есть например:
$str = 'Hello world привет мир';
в utf8. Требуется распарсить строку таким образом, чтобы в $str_1 попало:
$str_1 = 'Hello world'
а в $str_2:
$str_2 = 'привет мир';
Желительно с применением регулярок. Просьба не отвечать сообщениями типа: "Юзай mb_*". Хотелось бы увидеть конкретный пример.



Спустя 2 минуты, 34 секунды (8.03.2010 - 20:01) twin написал(а):
Цитата
Просьба не отвечать сообщениями типа: "Юзай mb_*". Хотелось бы увидеть конкретный пример.

В таком случае у меня тоже просьба.
Хотелось бы увидеть, какие предпринимались попытки.

Спустя 33 минуты, 24 секунды (8.03.2010 - 20:35) krasilich написал(а):

preg_split('@(?:[a-z]\s+[а-яё])|(?:[а-я]\s+[a-z])@iu', $str, $array);

Спустя 15 часов, 25 минут, 52 секунды (9.03.2010 - 12:00) GiGnet написал(а):
Цитата (see_man @ 8.03.2010 - 17:35)

preg_split('@(?:[a-z]\s+[а-яё])|(?:[а-я]\s+[a-z])@iu', $str, $array);

Предложенный вами вариант регулярки приведет к следующему:

$arr = preg_split('@(?:[a-z]\s+[а-яё])|(?:[а-я]\s+[a-z])@iu', $str);
echo $arr[0]; // выдаст: "Hello world"
echo $arr[1]; // выдаст: "ривет мир";

Я собсно вот тока не понял, что делает "(?:". Объясните пожалуйста или подкиньте ссылочку. Собсно задачу я решил следующим способом:

$str_1 = "Hello world привет мир";
$str_2 = $str;
$str_1 = preg_replace('#[а-яё]#iu', '', $str_1);
$str_2 = ltrim(preg_replace('#[a-z]#iu', '', $str_2));

Спасибо за модификатор "u".
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.