$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) |
|
Предложенный вами вариант регулярки приведет к следующему:
$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".