Разбить переменную

goacher

Новичок
Разбить переменную

Как разбить переменную вида

$a="1. Привет(и текст пошел) 2. И текст пошел 3. И текст пошел";

Нужно повытягивать
$a[0]="1. Привет(и текст пошел)";
$a[1]="2.И текст пошел";
$a[3]="3. И текст пошел";

Как это можно сделать?
Заранее спасибо.
 

Adelf

Administrator
Команда форума
А по какому принципу ты сам разбил?

Как ты разобьешь такое предложение: "1. Привет(и текст пошел) 3. И текст пошел 2. И текст пошел"; ?

Обычной регуляркой наверно можно разбить, если правил разбивания замудренных нет. http://ru2.php.net/manual/en/function.preg-split.php
 

goacher

Новичок
я и регуляркой пробую, просто не могу правиольно составить регулярку.
 

goacher

Новичок
Splurov, спасибо
в тексте цифр нету.
Интересует больше всего вопрос как составить регулярку, а не функции.
 

Splurov

Новичок
goacher
Покажи свои неудачные попытки, мы поможем довести их до работающего варианта.
 

Alexandre

PHPПенсионер
вообще можно и через preg_match_all без assertions, если в тексте нету цифр.
\d+\.(.+) - должно разбиваться на последовательность: цифра (еще одна или несколько), точка, последовательность любых символов

ответ теоретический, на практике не проверял

-~{}~ 22.01.10 15:36:

тогда уж \d+ - цифр может быть несколько (одна-две)
 

goacher

Новичок
preg_match_all("#(?=\d\.)#s", "1. Привет(и текст пошел) 3. И текст пошел 2. И текст пошел", $out, PREG_SET_ORDER);
print_r ($out);

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

Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => ) [2] => Array ( [0] => ) )
 

Вурдалак

Продвинутый новичок
Re: Разбить переменную

PHP:
$arr = preg_split('/\\d+\\.\\s?/', $s, -1, PREG_SPLIT_NO_EMPTY);
-~{}~ 22.01.10 15:51:

Чтобы номера предложений добавлялись, можно так
PHP:
$arr = preg_split('/(\\d+)\\.\\s?/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
 

goacher

Новичок
C_TIGER
Спасибо, ваше подошло. Только если номе Двухзначный - то его раскидывает, а такого быть не должно... Как бы это исправить тут
preg_split()
#(?=\d+\.)#s
 

dimagolov

Новичок
goacher, почитай хоть первые пару страниц по регуляркам, чтобы начать понимать их основы
 

goacher

Новичок
\d - любая цифра
а чего она тогда число 11 разбивает на 1 и 1

-~{}~ 22.01.10 17:15:

'#(\d+\.)#s' - попробовал таким способом. цифру и текст в разные переменные раскидывает.

-~{}~ 22.01.10 18:46:

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

dimagolov

Новичок
goacher, по логике тебе проще будет через preg_match_all побить, но дополнить шаблон до захвата и всех не-цифр после цифр-точки
 

Sigorma

Новичок
строка похожа на какой то список, есть предположение что решить задачу можно было бы эксплодом по "\n"
 
Сверху