Как найти начало и конец текста, если они в разных строках?

DanGien

Новичок
Как найти начало и конец текста, если они в разных строках?

Штудирую сейчас регулярные выражения и функции. Что-то туго они у меня идут-(( Теоретически все более-менее ясно, но практически куча подводных камней.

Вот например.

Функция preg_match_all( ) находит все совпадения шаблона в заданной строке.

Пишу
if (preg_match("/<!--file begin-->(.*)<!--text begin-->/U", $fp, $match2))
{
$part2 = $match2[0];
}

Ничего не находит. А все потому, что <!--file begin--> и <!--text begin--> в файле находятся в РАЗНЫХ строках! А поиск идет только по одной строке. А мне нужно как раз ВЕСЬ текст, размещенный между <!--file begin--> и <!--text begin-->

Не подскажете, как это сделать? Может, нужно как-то убрать символы перехода на новую строку, чтобы весь файл был одной строкой? Но не скажется ли это на скорости программы, если файл будет большой?

P.S. Был бы также благодарен за ссылку, где нормально описаны регулярные выражения, как с ними работать...
 

DanGien

Новичок
Заработало! Сенкс, Линк!

А где можно все же нормальную доку по рег. выражениям найти, не посоветуете?:)
 

young

Новичок
m (PCRE_MULTILINE)
By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless D modifier is set). This is the same as Perl.

When this modifier is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m modifier. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect.

s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.
мануал читать надо!!!
В стандарнтом мануале это очччень хорошо расписано
 

DanGien

Новичок
young, оно может и лучше, но учиться программерить хотелось бы все же на своем языке... А то и так полно информации, так еще и переводить сидеть...:)
 

young

Новичок
DanGien
Поверь, что самая полная и самая свежая документация только на английском. Если ты хочешь стать стоящим программистом - начинай учить английский уже сегодня
 

DanGien

Новичок
young, да я знаю... И инглиш немного знаю. Просто если что-то трудно понимаю, предпочитаю разбираться на русском, чтобы еще больше не запутаться:) А когда уже знаешь азы, можно и на китайском. Главное, чтобы примеры наглядные были:)
 

Demiurg

Guest
Линк
пожалуйста, постарайся воздержаться от ответа, если плохо знаешь предметную область.
 

DanGien

Новичок
Спасибо за ответы! Я тут по инету полазил, кое-что нарыл. Просмотрю, стоящее или как.
 

Линк

Guest
2Demiurg: а чем мой вариант плох? Просто я решил что человеку который плохо знает рег выр проще всего сделать так. Ведь у него заработало.
 

Линк

Guest
2Demiurg c таким аргументом не поспоришь)))):)


Altex угу) просто у меня нагляднее
 

Demiurg

Guest
Нагляднее поставить правильный модификатор и не засорять лишний раз выражение.
 

DanGien

Новичок
Автор оригинала: Demiurg
Нагляднее поставить правильный модификатор и не засорять лишний раз выражение.
Я понял! Линк дал правильный способ, но еще правильнее будет
(.*)/s

Тогда эти метасимволы будут характерны не для строки, а для ВСЕГО теста! Иду разбираться дальше с этим всем...
 

Demiurg

Guest
DanGien
Есть два способа проникнуть в доп с запертой дверью:
1. пролезть в окно
2. открыть дверь ключом.

какой предпочитаешь ты ?
 

DanGien

Новичок
Автор оригинала: Demiurg
DanGien
Есть два способа проникнуть в доп с запертой дверью:
1. пролезть в окно
2. открыть дверь ключом.

какой предпочитаешь ты ?
Написать алгоритм открытия любой двери и не мучаться:D
 
Сверху