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

  • Автор темы Автор темы goacher
  • Дата начала Дата начала

goacher

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

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

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

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

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

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

Обычной регуляркой наверно можно разбить, если правил разбивания замудренных нет. http://ru2.php.net/manual/en/function.preg-split.php
 
я и регуляркой пробую, просто не могу правиольно составить регулярку.
 
Splurov, спасибо
в тексте цифр нету.
Интересует больше всего вопрос как составить регулярку, а не функции.
 
goacher
Покажи свои неудачные попытки, мы поможем довести их до работающего варианта.
 
вообще можно и через preg_match_all без assertions, если в тексте нету цифр.
\d+\.(.+) - должно разбиваться на последовательность: цифра (еще одна или несколько), точка, последовательность любых символов

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

-~{}~ 22.01.10 15:36:

тогда уж \d+ - цифр может быть несколько (одна-две)
 
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);
 
C_TIGER
Спасибо, ваше подошло. Только если номе Двухзначный - то его раскидывает, а такого быть не должно... Как бы это исправить тут
preg_split()
#(?=\d+\.)#s
 
goacher, почитай хоть первые пару страниц по регуляркам, чтобы начать понимать их основы
 
\d - любая цифра
а чего она тогда число 11 разбивает на 1 и 1

-~{}~ 22.01.10 17:15:

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

-~{}~ 22.01.10 18:46:

а нужно чтобы в одной переменной был номер и текст, что то так не получается.
 
goacher, по логике тебе проще будет через preg_match_all побить, но дополнить шаблон до захвата и всех не-цифр после цифр-точки
 
строка похожа на какой то список, есть предположение что решить задачу можно было бы эксплодом по "\n"
 
Сверху