Как найти более одной переменной в строке с помощью preg_match?
У меня ниже строки в переменной php, где значения переменных, которые нужно найти, подсвечиваются.
$var = '<div class="CK mag10">OKT: **VARVALUE1**<span class="OK1 OK2">|</span>MOK: **VARVALUE2**<span class="OK1 OK2">|</span>ISIN: **VARVALUE3**<span class="OK1 OK2">|</span>SOCCER: **VARVALUE4**</div>';
Я написал этот код:
$found_matches = preg_match('/\<div class=\"CK mag10\">OKT: ([0-9A-Za-z]+)\<span class=\"OK1 OK2\"\>|\<\/span\>MOK: ([0-9A-Za-z]+)\<span class=\"OK1 OK2\"\>|\<\/span>ISIN: ([0-9A-Za-z]+)\<span class=\"OK1 OK2\"\>|\<\/span>SOCCER: ([0-9A-Za-z]+)\<\/div\>/i', $var, $matches);
но он дает мне только одно значение не все значения переменных. Есть ли способ получить все значения переменных, сложенные в один единственный массив $?
Возможно, эта функция полезна для вас:
preg_match_all("/(?<=startTag)[\w]+(?=endTag)/", $input_lines, $output_array);
startTag= изменить строку до строки по умолчанию перед словом, которое вы хотите извлечь.
endTag= изменить свою строку на строку по умолчанию после окончания слова, которое вы хотите извлечь.
Образец - preg_match
или preg_match_all
Выход
array(
0 => array(
0 => VARVALUE1
1 => VARVALUE2
2 => VARVALUE3
3 => VARVALUE4
)
)
Вот способ
Вот пример кода:
<?php
$html = <<<HTML
<div class="CK mag10">OKT: VARVALUE1<span class="OK1 OK2">|</span>MOK: VARVALUE2<span class="OK1 OK2">|</span>ISIN: VARVALUE3<span class="OK1 OK2">|</span>SOCCER: VARVALUE4</div>
HTML;
$arr = array();
$dom = new DOMDocument;
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD);
$xp = new DOMXPath($dom);
$links = $xp->query('//div[@class="CK mag10"]');
foreach ($links as $link) {
$chks = explode('|', $link->nodeValue);
foreach ($chks as $chk) {
if (preg_match('/\s*[A-Z]+:\s+(.*)/', $chk, $matches)) {
array_push($arr, $matches[1]);
}
}
}
print_r($arr);
preg_match_all