При помощи PHP Simple HTML DOM (других библиотек не предлагать) хотелось бы распарсить страницу, выловив всех прямых потомков в неких блоках.
Приблизительная структура документа:
<div class="row"><!-- Целевой блок для выборки -->
<div class="cell"><!-- Вот этот блок нужен -->
<div class="cell"><!-- А этот блок не нужен -->
</div>
</div>
<div class="cell"><!-- Вот этот блок нужен -->
</div>
</div>
...
<div class="row"><!-- Целевой блок для выборки -->
<div class="cell"><!-- Вот этот блок нужен -->
</div>
Делал примерно так:
<?PHP
include('/lab/simple_html_dom.php');
$html = file_get_html('................../main.php');
echo "<div id=\"grid\" class=\"container-fluid\">";
foreach($html->find("div.row") as $e) {
echo "<div class=\"row show-grid dropdown\">";
foreach($e->children() as $ee) {if ($ee->parent()->class == "row") echo "<div class=\"".$ee->class."\">widdget</div>";}
echo "</div>";
}
echo "</div>";
?>
Но, всё равно, выбираются и непрямые потомки. Хотя условие, вроде, правильное.
Можно попробовать через переборку nextSibling с проверкой. Но может есть и более красивое решение?
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.