2015-01-04 3 views
-2

Я разрабатывал поисковую систему на PHP без использования MySQL. Поэтому я создал систему, которая ищет слова в php-файлах. Он работает нормально, но проблема отображает найденные страницы. Я пытаюсь использовать регулярное выражение, чтобы показать заголовок страницы (если есть) на найденных страницах, например:разрыв строки в регулярных выражениях в php

preg_match_all('/<title[^>]*>(.*?)<\/title>/',$conteudo, $matches, PREG_PATTERN_ORDER); 

Он отлично работает, когда нет разрыва строки после тега заголовка. но если я сломаю строку после тега, например, это не сработает. Кто-то может мне помочь?

ответ

1

добавить s (PCRE_DOTALL) флаг вашего регулярного выражения (то есть. Присоединять s после окончания /), поэтому . в регулярное выражение будет соответствовать новой строки.

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. 
+0

Извините, я не очень привык к регулярным выражениям, вы можете показать, как должен выглядеть код? Спасибо – user2701811

+0

, вы действительно должны прочитать документацию preg_match_all * flags. Они действительно просты в использовании и e. г. игнорировать дело. –

+0

add 's' в конце регулярного выражения: 'preg_match_all ('/ ] *> (. *?) <\/title>/s', $ conteudo' ... – Iftah