Когда вы уже используете анализатор HTML (даже такой плохой, как SimpleHtmlDom), почему вы тогда пытаетесь что-то испортить с помощью Regex?Это все равно, что использовать скальпель, чтобы открыть пациента, а затем вернуться к заостренной ложке для реальной операции.
Поскольку я твердо верю, что никто не должен использовать SimpleHtmlDom, потому что он имеет плохую кодовую базу и намного медленнее, чем libxmlОснованные на парсерах, вот как это сделать с родным расширением DOM PHP и XPath .XPath - это документы Regex или SQL для X (HT) ML.Изучите его, так что вам больше никогда не придется прикасаться к Regex для HTML.
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTMLFile('https://laperuanavegana.wordpress.com/2011/06/11/ensalada-tibia-de-quinua-mango-y-tomate/');
libxml_clear_errors();
$recipe = array();
$xpath = new DOMXPath($dom);
$contentDiv = $dom->getElementById('content');
$recipe['title'] = $xpath->evaluate('string(div/h2/a)', $contentDiv);
foreach ($xpath->query('div/div/ul/li', $contentDiv) as $listNode) {
$recipe['ingredients'][] = $listNode->nodeValue;
}
print_r($recipe);
Это выдаст:
Array
(
[title] => Ensalada tibia de quinua, mango y tomate
[ingredients] => Array
(
[0] => 250gr de quinua cocida tibia
[1] => 1 mango grande
[2] => 2 tomates
[3] => Unas hojas de perejil
[4] => Sal
[5] => Aceite de oliva
[6] => Vinagre balsámico
)
)
Обратите внимание, что мы не анализируем http://laperuanavegana.wordpress.com/
, а фактическийСообщение блога.Основной URL-адрес будет изменять содержание всякий раз, когда владелец блога добавляет новый пост.
Чтобы получить все Рецепты с главной страницы, вы можете использовать
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTMLFile('https://laperuanavegana.wordpress.com');
libxml_clear_errors();
$contentDiv = $dom->getElementById('content');
$xp = new DOMXPath($dom);
$recipes = array();
foreach ($xp->query('div/h2/a|div/div/ul/li', $contentDiv) as $node) {
echo
($node->nodeName === 'a') ? "\n# " : '- ',
$node->nodeValue,
PHP_EOL;
}
Это выдаст
# Ensalada tibia de quinua, mango y tomate
- 250gr de quinua cocida tibia
- 1 mango grande
- 2 tomates
- Unas hojas de perejil
- Sal
- Aceite de oliva
- Vinagre balsámico
# Flan de lúcuma
- 1 lúcuma grandota o 3 pequeñas
- 1/2 litro de leche de soja evaporada
…
и так далее
Такжесм.