Даны перменные:
$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()
Парсить 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"]
Можно попробовать применить следующее регулярное выражение:
\>(\w+)?\<
Результат
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть два класса, пусть будет Форма 1 и Форма 2, который созданы в Qt desingerЯ хочу их завязать между собой
Есть код программы, которая позволяет ввести динамический массив, а затем 1Упорядочивает элементы массива по возрастанию
Мне нужно, чтобы в случае неверного ввода password запрашивало password до тех пор пока не будет password верен
Нужно написать функцию, которая с помощью рекурсии могла бы найти введенное значение, без рекурсии вроде бы как сделалВот код