Как используя 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>' |
<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>' |
<option data-collects-biometrics="false" selected="selected" value="95">Vancouver</option></select>'
Пытался через Dom, но он ругается, что html не корректный.
Дополнительно:
preg_match('#selected="selected" value="(.*)"#isU', $html, $matches); echo $matches[1]; |
preg_match('#selected="selected" value="(.*)"#isU', $html, $matches); echo $matches[1];
- Самое прикольное будет, если у автора вопроса на руках не приведённый обрывок, а полноразмерный HTML с множеством разных select-ов... :-P
- AUser0, ну какой вопрос, такой и ответ)
Вариант решения через 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" |
<?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"
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для парсинга HTML с использованием функции preg_match в PHP, необходимо сначала загрузить HTML код в переменную. Затем можно использовать регулярные выражения для поиска нужной информации в HTML коде.
Например, допустим, что мы хотим получить все ссылки из HTML кода. Мы можем использовать следующий код: