@AlexSer

Как используя preg_match распарсить html?

Привет! Как достать в нужном select в Html тот пункт который selected.
Мне нужно value выбранного элемента.
<select name="appointments[consulate_appointment][facility_id]" id="appointments_consulate_appointment_facility_id" class="required"><option value="" label=" "></option>
<option data-collects-biometrics="false" value="89">Calgary</option>
<option data-collects-biometrics="false" value="90">Halifax</option>
<option data-collects-biometrics="false" value="91">Montreal</option>
<option data-collects-biometrics="false" value="92">Ottawa</option>
<option data-collects-biometrics="false" value="93">Quebec City</option>
<option data-collects-biometrics="false" value="94">Toronto</option>
<option data-collects-biometrics="false" selected="selected" value="95">Vancouver</option></select>'

Мне нужно получить value:
<option data-collects-biometrics="false" selected="selected" value="95">Vancouver</option></select>'

Пытался через Dom, но он ругается, что html не корректный.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 2
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
preg_match('#selected="selected" value="(.*)"#isU', $html, $matches);
echo $matches[1];
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Вариант решения через DOMDocument + DOMXpath

<?php
$html = '<select name="appointments[consulate_appointment][facility_id]" id="appointments_consulate_appointment_facility_id" class="required"><option value="" label=" "></option>
<option data-collects-biometrics="false" value="89">Calgary</option>
<option data-collects-biometrics="false" value="90">Halifax</option>
<option data-collects-biometrics="false" value="91">Montreal</option>
<option data-collects-biometrics="false" value="92">Ottawa</option>
<option data-collects-biometrics="false" value="93">Quebec City</option>
<option data-collects-biometrics="false" value="94">Toronto</option>
<option data-collects-biometrics="false" selected="selected" value="95">Vancouver</option></select>';

$dom = new DOMDocument();
$dom->loadHTML($html);

$xpath = new DOMXpath($dom);
$result = $xpath->query("//select/option[@selected='selected']");
$value = $result->item(0)->getAttribute('value');

var_dump($value); //string(2) "95"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 00:54
10000 руб./за проект
28 апр. 2024, в 00:53
70000 руб./за проект
27 апр. 2024, в 21:24
150000 руб./за проект