Регулярка, вопрос

программирование php JavaScript регулярные выражения регулярное выражение

есть такое
$text = file_get_contents("11111.txt");
в этом файле находится куча текста и в некоторых местах вставлен php код:

.....текст текст текст ... <? echo('test'); ?>.... текст
.....текст текст текст ........текст текст текст ...
<?
echo( ' lol ');
?>
.....текст текст текст .......текст текст текст ...

надо регуляркой до <? взять текст и занести в $match[0] php код далее в $match[1] далее текст $match[2] опять код $match[3]


так чтото не получается
preg_match_all('#(.*)<\?(.*)\?>(.*)#', $text, $match);

ЗЫ - очень плохо в регулярках понимаю

Примечание:
тоесть, я по тексту допустим иду preg_match-ем, мне надо чтобы по очереди в массив разбивался текст
$match[0] - с самого начала документа до вставки <? (или <?php)
$match[1] - вставка <? (или <?php) до вставки ?>
$match[2] - текст обычный
$match[1] - вставка <? (или <?php) до вставки ?>
$match[2] - текст обычный
и т/д

Примечание:
Извините не правильно выше написал
$match[0] - с самого начала документа до вставки <? (или <?php)
$match[1] - вставка <? (или <?php) до вставки ?>
$match[2] - далее текст обычный после вставки выше
$match[3] - вставка <? (или <?php) до вставки ?> после текста выше
$match[4] - текст обычный после вставки выше
и т/д до конца документа
Ответы:
про парсеры почитайте.
т.е. все, кроме вставок <?php … ?> ?
1) Зачем там #?
2)(.*) осуществляет жадное захватывание. В частности, если рядом идут две вставки - в $match[2] попадёт всё от начала первой до конца второй
Дополнение #2 - нет, так не сможете. Принципиальная особенность регулярных выражений такая, что у $match в итоге всегда фиксированное число элементов, в зависимости от заданного паттерна и того, сколько раз в нём встречаются скобки. Зато можно, например, сделать выражение "\?>(([^<]|<[^?])*)<\?" для поиска промежуточного выражения между двумя php-тегами, и применить этот поиск произвольное число раз.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.