|
|
|
| Есть текстовая переменная типа
$var = "asd2fda1fds3fdd4";
Т.е. буквы - цифра - буквы - цифра и т.д.
Требуется получить массив:
$m[1] = asd2;
$m[2] = fda1;
$m[3] = fds3;
$m[4] = fdd4;
т.е. каждая часть - до цифры включительно
Подскажите, пожалуйста, как это осуществить. | |
|
|
|
|
|
|
|
для: Qiao
(27.10.2008 в 17:46)
| | Тут, думаю, лучше рег. выражением
<?php
$text = 'asd2fda1fds3fdd4';
preg_match_all("|[a-z]+\d+|i", $text, $buf);
print_r($buf);
?>
|
P.S.: а кол-во букв/цифр одинаково всегда?
Если да, тогда можно проще...
<?php
$text = 'asd2fda1fds3fdd4';
print_r(str_split($text, 4));
?>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 17:54)
| | Ага, спасибо.
Количество наборов разное.
Ещё с регвыр придумал - вставить после каждой цифры пробел preg_replace() и затем explode(). | |
|
|
|
|
|
|
|
для: Qiao
(27.10.2008 в 18:03)
| | Зачем делать 2 операции, если можно обойтись одной? ) | |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 18:20)
| | случайно наткнулся на специализированную для этой операции функцию - preg_split() | |
|
|
|
|
|
|
|
для: Qiao
(28.10.2008 в 06:47)
| | Если для первого варианта, то да.
Хотя разницы практически тут нет. | |
|
|
|
|
|
|
|
для: ddhvvn
(28.10.2008 в 10:13)
| | preg_split() , кстати не очень удобная - ведь удалять никаких разделителей не надо.
Придётся пользоваться
$var = preg_split ("|(?<=\d)|", "$var");
Но тут у массива почему-то образуется пустой элемент на конце. | |
|
|
|
|
|
|
|
для: Qiao
(28.10.2008 в 17:32)
| | А, там флаг PREG_SPLIT_NO_EMPTY нужен.
Вобщем preg_match_all лучше всего для данной задачи подходит ) Надо только помнить, что искомый массив храниться в его первом (нулевом) елементе. | |
|
|
|