как достать переменную из html кода

306
19 апреля 2017, 14:09

Даны перменные:

$input=`<div class='someclass1'>text2</div><div class='someclass2'>text1</div>`;

Как получить массив из text1 и text2?

Я использую:

$reg=`/<div class='someclass[0-9]'>[a-A0-9]<\/div>/` // регулярка
preg_match_all($reg, $text, $output); // разбиваем строку в массив по регулярке
$delete_array=[`/<div class='someclass[0-9]'>/`, `/<\/div>/`]; // массив на удаление
$output=preg_replace($delete_array, '', $output[0]); // ['text1', 'text2']

То есть входную строку разбиваю на массив по регулярному выражению и из полученного массива строк убираю лишнее.

Проблема - приходится подавать в функцию много переменных.

Вопрос - можно ли обойтись без $delete_array и выполнить эту задачу за 1 процедуру?

Почитал про регулярки, но не понял как поколдовать над ними, чтобы в $output выходили сразу искомые значения, без использования preg_replace()

Answer 1

Парсить DOM нужно с помощью парсеров DOM.

$str = "<div class='someclass1'>text2</div><div class='someclass2'>text1</div>";
$dom = new DomDocument();
$dom->loadHTML($str);
// $result = array_map(function($div){return $div->nodeValue;}, iterator_to_array($dom->getElementsByTagName('div')));
$divs = $dom->getElementsByTagName('div');
$result = [];
foreach ($divs as $div) {
  $result[] = $div->nodeValue;
}
var_dump($result); // ["text2", "text1"]
Answer 2

Можно попробовать применить следующее регулярное выражение:

\>(\w+)?\<

Результат

READ ALSO
Qt5 | Переходы между формами

Qt5 | Переходы между формами

Есть два класса, пусть будет Форма 1 и Форма 2, который созданы в Qt desingerЯ хочу их завязать между собой

238
Разбиение кода на функции. С++

Разбиение кода на функции. С++

Есть код программы, которая позволяет ввести динамический массив, а затем 1Упорядочивает элементы массива по возрастанию

258
Возвращение значения

Возвращение значения

Мне нужно, чтобы в случае неверного ввода password запрашивало password до тех пор пока не будет password верен

160
Рекурсивная функция - C++ [требует правки]

Рекурсивная функция - C++ [требует правки]

Нужно написать функцию, которая с помощью рекурсии могла бы найти введенное значение, без рекурсии вроде бы как сделалВот код

243