2015-08-25 87 views
1

如何使用preg_match在字符串中查找多個變量?如何使用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); 

,但它給我只有一個值不是所有的變量值。 有沒有辦法讓所有變量值堆疊在單個數組中$匹配

+4

'preg_match_all' – ndn

回答

0

也許這個功能對您有用:

preg_match_all("/(?<=startTag)[\w]+(?=endTag)/", $input_lines, $output_array); 

STARTTAG =要提取的詞之前更改其字符串默認字符串。

endTag =在結束要提取的單詞後,將其字符串更改爲默認字符串。

Sample - preg_matchpreg_match_all

退出

array(
    0 => array(
     0 => VARVALUE1 
     1 => VARVALUE2 
     2 => VARVALUE3 
     3 => VARVALUE4 
    ) 
) 
0

這裏是一個辦法

  1. 解析HTML使用DOM
  2. 獲取安全的方式結果

下面是一個示例代碼:

<?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

相關問題