@yourbatya
Разрабатываю разработки

Как выбрать элемент, если идентификаторы не уникальные?

Добрый день!
Пытаюсь парсить страницу, но наткнулся на проблему, когда у нескольких элементов одинаковые идентификаторы.
Вот структура, которую я пытаюсь разобрать:
<div class="tabs_p">
 <div class="tabs_p_d">
  <div class="tabs_p_t">Name</div>
  <div class="tabs_p_d"></div>
 </div>
<div class="tabs_p_v">
    5016                        </div>
  </div>
<div class="tabs_p_d">
  <div class="tabs_p_t">ID</div>
  <div class="tabs_p_d"></div>
 </div>
<div class="tabs_p_v">
    506                        </div>
  </div>
<div class="tabs_p_d">
  <div class="tabs_p_t">LS</div>
  <div class="tabs_p_d"></div>
 </div>
<div class="tabs_p_v">
    485                        </div>
  </div>
<div class="tabs_p_d">
  <div class="tabs_p_t">Value</div>
  <div class="tabs_p_d"></div>
 </div>
<div class="tabs_p_v">
    100                        </div>
  </div>

Как видите, у элементов нет уникальных идентификаторов, по которым можно было бы делать выборку. Но мне, например, нужно выбрать значение, в блоке "value". Как я могу получить эту цифру 100?
Как работает код, который разбирает эту страницу, например, для получения заголовка:
function Parse($p1, $p2, $p3) {
 $num1 = strpos($p1, $p2);
 if ($num1 === false) return 0;
  $num2 = substr($p1, $num1);
  return strip_tags(substr($num2, 0, strpos($num2, $p3)));
                      }
$string = file_get_contents('$source');
$name = strip_tags(trim(Parse($string, '<h1 item="name">', '</h1>')));

Помогите, пожалуйста, может есть какой-то метод выборки не по идентификаторам, а по содержимому элементов?
Или, как вариант, выбирать последний элемент, т.к. нужный мне всегда находится в конце.
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
@galliard
$matches = [];

preg_match_all('/tabs_p_t">(.+?)<.+?tabs_p_v">(.+?)</s', $html, $matches);

$result = array_map('trim', array_combine(...array_slice($matches, 1)));

echo $result['Value'];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы