2013-07-09 126 views
1

我一直在尋找類似的問題,但還沒有找到任何人有類似的問題或可能的解決方案。 我有preg_match_all函數,它發現我5匹配並返回他們在數組中。我如何計算數組中的字符串?從preg_match_all計數匹配

preg_match_all("/\)\">(.*?)<\/a>/s",$value,$counter); 
here is var_dump(counter[1]): 
array (size=1) 


0 => string 'word1' (length=..) 

array (size=1) 
    0 => string 'word2' (length=..) 

array (size=1) 
    0 => string 'word3' (length=..) 

array (size=1) 
    0 => string 'word4' (length=..) 

array (size=1) 
    0 => string 'word5' (length=..) 

正如你看到它返回我5場比賽,但我不能打印數量既不array_count_valuescount() ...我已經試過爆然後得到的字符串,但count()不會工作要麼。

count($counter[1]) returns me -> 
int 1 

int 1 

int 1 

int 1 

int 1 

我需要得到的匹配數量,我沒有任何更多的想法,所以任何事情都非常歡迎。

更新:這裏是var_dump($ value);

string '<h2><a href="javascript:Organigram.toggle('organigram_section_29')">word1</a></h2><div class="show"><p class="nums"><span class="phone">03 839 11 00</span></p>' (length=170)

string '<h2><a href="javascript:Organigram.toggle('organigram_section_35')">word2</a></h2><div class="show"><p class="nums"><span class="phone">03 839 12 00</span><span class="fax">03 839 12 18</span><span class="email email-mod"><a title="[email protected]" href="mailto:[email protected]"><img alt='[email protected]' src='Txt2Image.ashx?AAARAAcASQAAAB0AEgAGADMAEwAGAB8AAAAMAF0ABwAAAFUAGQAGABcAEQBUAAAAAAAQAB8AEQANAFUAEgAGAB0AAABUADIABgAAABIAGABSAEIAQABSAAMADABSAFAARQAtAEcARQBeADYATwALABwAGAANAEMARABZAEMARQBdADIARQA=' /></a></s' ...(長度= 938)`

string '<h2><a href="javascript:Organigram.toggle('organigram_section_51')">word3</a></h2><div class="show"><p class="nums"><span class="phone">03 839 12 12</span></p>' (length=162)

string '<h2><a href="javascript:Organigram.toggle('organigram_section_56')">word4</a></h2><div class="show"><p class="nums"><span class="phone">03 839 12 14</span></p>' (length=168)

string '<h2><a href="javascript:Organigram.toggle('organigram_section_61')">word5</a></h2><div class="show"><p class="nums"><span class="phone">03 839 61 28</span></p>' (length=162)

+0

使用count()函數來獲取數組數 – Sundar

回答

6

preg_match_all本身返回匹配滿圖案的數量(其可能爲零),否則爲假髮生了錯誤。

$number = preg_match_all("/\)\">(.*?)<\/a>/s",$value,$counter); 
+0

是的,它返回: INT 1 INT 1 INT 1 INT 1 INT 1 – Blue

+0

它ruturns總數的比賽。如果它返回1,那麼這意味着,你的模式只有1個匹配。 –

+0

$ numRows2 = var_dump($ counter [1]); - > 陣列(大小= 1) 0 =>串 '銷售'(長度= 4) 陣列(大小= 1) 0 =>串 '管理'(長度= 6) 陣列(大小= 1) 0 =>串 '現金'(長度= 4) 陣列(大小= 1) 0 =>字符串 '帳戶'(長度= 8) 陣列(大小= 1) 0 =>串'director'(length = 8) – Blue

0
<?php 

/* function strlen1($val) 
{ 
    return strlen($val); 
} */ 

//get the each value count 
$b = array_map('strlen', $counter); 

print_r($b);