шаблоном для preg_match_all

Andrey_UD

Новичок
шаблоном для preg_match_all

Подскажите какой нужен шаблон чтоб поместить задания :
Нужно тесты в массив поместить

1A6 Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

1A10 Мікроекономіка вивчає:
б) рівень окремого підприємства

1A11 Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;

В массив:

Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

Мікроекономіка вивчає:
б) рівень окремого підприємства

Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
1. Зачем это нужно?
2. Как пробовал сам?
 

Andrey_UD

Новичок
Вот пробовал:
PHP:
preg_match_all("!1A[1-9][1-9]?(.*?)1A[1-9][1-9]?!is",$contents, $out);
Но копирует через 1 тест а их много.

Нужно для книги с решениями тестов.
Потом я ещё обработаю этот масив (отсортирую по уровнях) и т.д. вот немогу их очистить от номеров (номеры говорят какой уровень сложности и тема)

-~{}~ 22.12.08 01:24:

Я понял, посто вырезая я вырелдаю и номен следуйщего теста..
Подскажите как вырезать, чтоб выбирая текст номер след текста не обрезать?

-~{}~ 24.12.08 19:56:

Подскажите как переделать шаблон, чтоб вырезал текс
между 1A6 по 1A10 в тексте:
-----------------
1A6 Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

1A10 Мікроекономіка вивчає:
б) рівень окремого підприємства
-----------------
Но не вырезал с текста 1A10

-~{}~ 24.12.08 23:46:

Как с тега вырезать знаю а так неполучаеться подскажите или укажите где искать
 

DiMA

php.spb.ru
Команда форума
var_dump(preg_split("!1A[1-9][1-9]?(?=[^\w\d])!is", $text));

выложи свой текст целиком и тот резльтат, который так мечтаешь получишь

и поменьше своего текста... многа букаф я не осилю .-)
 

Andrey_UD

Новичок
Вырезать текст:
------------------------------------
1A6 Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

1A10 Мікроекономіка вивчає:
б) рівень окремого підприємства

1A11 Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;

1A6 Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

1A10 Мікроекономіка вивчає:
б) рівень окремого підприємства

1A11 Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;
------------------------------------------
В массив:

$book['1'] - Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

$book['2'] - Мікроекономіка вивчає:
б) рівень окремого підприємства

$book['3'] - Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;

$book['4'] - Всезагальні економічні закони – це закони:
а) які властиві всім суспільним способам виробництва;

$book['5'] - Мікроекономіка вивчає:
б) рівень окремого підприємства

$book['6'] - Попередньо сформульовані неперевірені теорії – це:
а) гіпотези;

ЗЫ: никак немогу разобраться с этими рег выражениями
 

DiMA

php.spb.ru
Команда форума
<?

$text="1A6 Всезагальн_ економ_чн_ закони - це закони:
а) як_ властив_ вс_м сусп_льним способам виробництва;

1A10 М_кроеконом_ка вивчає:
б) р_вень окремого п_дприємства

1A11 Попередньо сформульован_ неперев_рен_ теор_ї - це:
а) г_потези;

1A6 Всезагальн_ економ_чн_ закони - це закони:
а) як_ властив_ вс_м сусп_льним способам виробництва;

1A10 М_кроеконом_ка вивчає:
б) р_вень окремого п_дприємства

1A11 Попередньо сформульован_ неперев_рен_ теор_ї - це:
а) г_потези;";

$text="\r\n".$text."\r\n";

preg_match_all("!\r\n((?=[1-9])\d{1,3}[A-Яа-я]\d{0,3})\s+(.*?)(?=\r?\n\r?\n)!s",$text,$reg);

var_dump($reg);

?>
 

Andrey_UD

Новичок
Да я также хотел сделать но проблема в том что не все они в таком формате в некоторых ответ в томже ряде или через один

Пример:
1A6 Всезагальні економічні закони – це закони:а) які властиві всім суспільним способам виробництва;

или так:

1A10 Мікроекономіка вивчає:

б) рівень окремого підприємства


Поетому хотел их вырезать между номерами, например между 1A6 и 1A7
 

DiMA

php.spb.ru
Команда форума
ты зачем мне мозг ..? Рег под новый текст подходит. Сначала проверь, потом пиши. Как вырезать "между" - я писал еще выше.

$text="\r\n".$text."\r\n\r\n0A";

preg_match_all("!\r\n([1-9]\d{0,2}[A-Яа-я]\d{0,3})\s+(.*?)(?=\r?\n\r?\n\s*([1-9]\d{0,2}[A-Яа-я]\d{0,3}))!s",$text,$reg);
 
Сверху