Это начинает скучно. Regex, скорее всего, не является инструментом выбора для соответствия языкам, таким как HTML, и есть тысячи подобных вопросов на этом сайте, чтобы доказать это. Я не собираюсь ссылаться на ответ, на который все остальные ссылаются - сделайте небольшой поиск и убедитесь сами.
При этом ваше первое регулярное выражение предполагает, что тег <title>
- это весь ввод. Я подозреваю, что это не так. Таким образом,
preg_match("#<title>(.*?)</title>#", $originalHTMLBlock, $textFound);
имеет немного больше шансов на работу. Обратите внимание на ленивый квантификатор, который становится важным, если на вашем входе содержится более одного знака <title>
. Что может быть маловероятно для <title>
, но не для <div>
.
Для вашего второго вопроса у вас есть только рабочий шанс с регулярным выражением, если у вас нет вложенных тегов внутри того, что вы ищете. Если это так, то
preg_match("#<div id=\"post_message_\">(.*?)</div>#", $originalHTMLBlock, $textFound);
может работать.
Но в целом вам лучше использовать HTML-парсер.
вы можете использовать https://gist.github.com/1358174, а затем для 1) '// title' и для 2)' // div [id = "post_message"] '. также см. http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662 – Gordon