如何使用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);
但它只给我一个值而不是所有变量值。 有没有办法让所有变量值都堆叠在单个数组 $ matches ?
中答案 0 :(得分:0)
也许这个功能对你有用:
preg_match_all("/(?<=startTag)[\w]+(?=endTag)/", $input_lines, $output_array);
startTag =将其字符串更改为您要提取的字词之前的默认字符串。
endTag =在结束要提取的单词后,将其字符串更改为默认字符串。
Sample - preg_match
或preg_match_all
退出强>
array(
0 => array(
0 => VARVALUE1
1 => VARVALUE2
2 => VARVALUE3
3 => VARVALUE4
)
)
答案 1 :(得分:0)
这是一种
的方法以下是示例代码:
<?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);
请参阅IDEONE demo