Как извлечь содержимое HTML с помощью Regex в PHP - PullRequest
0 голосов
/ 12 мая 2010

Я знаю, я знаю ... регулярное выражение - не лучший способ извлечь текст HTML. Но мне нужно извлечь текст статьи из множества страниц, я могу хранить регулярные выражения в базе данных для каждого веб-сайта. Я не уверен, как парсеры XML будут работать с несколькими сайтами. Вам понадобится отдельная функция для каждого сайта.

В любом случае, я не знаю много о регулярных выражениях, так что терпите меня.

У меня есть страница HTML в формате, подобном этому

<html>
<head>...</head>
<body>
    <div class=nav>...</div><p id="someshit" />
    <div class=body>....</div>
    <div class=footer>...</div>
</body>

Мне нужно извлечь содержимое контейнера класса тела.

Я пробовал это.

$pattern = "/<div class=\"body\">\(.*?\)<\/div>/sui"
$text = $htmlPageAsIs;
if (preg_match($pattern, $text, $matches))
    echo "MATCHED!";
else
    echo "Sorry gambooka, but your text is in another castle.";

Что я делаю не так? Мой текст заканчивается в другом замке.

* РЕДАКТИРОВАТЬ: ооооо ... ничего, я нашел код читабельности

1 Ответ

0 голосов
/ 12 мая 2010

Вы подходите для class="body" в вашем документе class=body: вам не хватает кавычек. Используйте "/<div class=\"?body\"?>(.*?)<\/div>/sui".

...