Найти элемент по содержимому [закрыт]

151
31 октября 2019, 03:50

Имеем список:

<ul>
    <li>Состав: медь, свинец</li>
    <li>Длина: 1м</li>
    <li>Вес: 5кг</li>
    <li>Страна: Россия</li>
</ul>

Нужно из всего списка получить содержимое li в котором есть слово "состав". Как возможно решить данную задачу?

Answer 1

В php есть готовый набор классов для работы с html-документом - та самая объектная модель документа, DOM. Просто загрузите документ и сможете делать по нему xpath-запросы на поиск нужных нод:

<?php
$html = <<<HTML
<ul>
    <li>foo: 123</li>
    <li>bar: 456</li>
    <li>baz: 789</li>
</ul>
HTML;
$doc = new DOMDocument;
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$entries = $xpath->query("//ul//li[contains(text(), 'foo')]");
echo "found: '{$entries[0]->nodeValue}'";

Выводит:

found: 'foo: 123'

Про xpath можно почитать хотябы в вики, XPath.

Answer 2

Вот так, если вы получаете лишки из базы или прочего, и выводите их:

$data = [
    'Состав' => 'медь, свинец',
    'Длина' => '1м',
    'Вес' => '5кг',
    'Страна' => 'Россия',
    ];
echo "<ul>";
foreach ($data as $key => $value){
    if ($key==="Состав") echo "<li><strong>{$key}: {$value}</strong></li>";
    else echo "<li>{$key}: {$value}</li>";
}
echo "</ul>";
READ ALSO
Формулы в PHPExcel

Формулы в PHPExcel

Возникла проблема с работой формул в PHPExcelФормулы записываются в значения ячейки, но чтобы вывело результат работы формулы, нужно нажать...

123
Laravel File Manager

Laravel File Manager

Установил по гайду Laravel FileManager (с офф гитхаба), но при открытии /laravel-filemanager возвращается просто 1ничего больше, только цифра 1

102
Wordpress — переадресация по url на другой шаблон single-{post_type}-{other}.php?

Wordpress — переадресация по url на другой шаблон single-{post_type}-{other}.php?

Есть custom_post_type = "post_type" Есть шаблон вывода записи ="single-post_typephp"

124
Magento2. Работа с фильтрами

Magento2. Работа с фильтрами

Читаю документацию по magento2, наткнулся на данную картинку

131