2012-01-12 45 views
-1

如果我有一個數組:如何在數組中使用preg匹配?

Array 
(
    [0] => Array 
     (
      [0] => |174|September|2001| 
      [1] => |Pengantar=Hello!!!! 
      [2] => |Tema= Sami Mawon 
      [3] => |Tema_isi=meet you!!! 
      [4] => |Kutip=people 
      [5] => |Kutip_kitab=Efesus 
      [6] => |Kutip_pasal=4 
      [7] => |Kutip_ayat=28 
      [8] => |Tema_sumber=Kiriman dari Maurits albert ([email protected]) 
      [9] => [[Kategori:e-humor 2001]] 
     ) 

我怎樣才能得到Pengantar,泰馬,Tema_isi等方面的價值?

+0

請說明您想要的值以及匹配這些值的條件。 – salathe 2012-01-12 09:16:36

回答

1

您將不得不遍歷數組,並使用帶引用的preg_match。 正則表達式東西像這樣(把我的頭頂部)可能會工作:

/\|(.*?)=(.*?)|?/ 

只需使用preg_match('/\|(.*?)=(.*?)|?/', $subject[$x], $matches);var_dump($matches);看到的結果。

不要忘記,傳遞給preg_match函數的$ matches數組是對數組的引用,您應該首先實例化它,並在每個循環中覆蓋它。

+0

但我無法獲得像** hello !!!,sami mawon,見到你!!!,人**等等的感謝之前的價值。 對不起,我是初學者.. – 2012-01-13 02:09:18

1

只使用數組的步行路程,匹配REG EX和lambda函數:

$array = array(
    array(
     '|174|September|2001|', 
     'Pengantar=Hello!!!!', 
     'Tema= Sami Mawon ', 
     'Kategori:e-humor 2001', 
      [...] 
    ) 
); 

$values = array(); 

array_walk($array[0],function(&$item1, $key) use(&$values) { 
    if(preg_match('#[^=]=(.+)#',$item1,$match)){ 
     $values[] = $match[1]; 
    } 
}); 

print_r($values); 
0
從問題

除了「哪個模式」,我建議你看看到preg_replace­Docs這是能夠在陣列操作直。

$pattern = "..."; 
$matches = preg_replace($pattern, '\1', $array); 
0

從問題中不清楚,但它看起來像你想preg_filter

該函數可以執行一個正則表達式匹配並替換一個數組,返回一個只包含匹配項的替換值的新數組。

1

正則表達式,可就是這樣,用"preg_match()"named subpattern: -

$a = array(
    array(
     '|174|September|2001|', 
     '|Pengantar=Hello!!!!', 
     '|Tema= Sami Mawon', 
     '|Tema_isi=meet you!!!', 
     '|Kutip=people', 
     '|Kutip_kitab=Efesus', 
     '|Kutip_pasal=4', 
     '|Kutip_ayat=28', 
     '|Tema_sumber=Kiriman dari Maurits albert ([email protected])', 
     '[[Kategori:e-humor 2001]]', 
    ) 
); 
$pattern = '/(?<first>\w+)[:=](?<rest>[\d|\w|\s]+)/'; 
$matches = array(); 
foreach ($a as $_arrEach) { 
    foreach ($_arrEach as $_each) { 
     $result = preg_match($pattern, $_each, $matches[]); 
    } 
} 

echo "<pre>"; 
print_r($matches); 
echo "</pre>"; 

你會發現,在數組鍵「first」滿足您的要求。

上面會輸出: -

Array 
(
    [0] => Array 
     (
     ) 

    [1] => Array 
     (
      [0] => Pengantar=Hello 
      [first] => Pengantar 
      [1] => Pengantar 
      [rest] => Hello 
      [2] => Hello 
     ) 

    [2] => Array 
     (
      [0] => Tema= Sami Mawon 
      [first] => Tema 
      [1] => Tema 
      [rest] => Sami Mawon 
      [2] => Sami Mawon 
     ) 

    [3] => Array 
     (
      [0] => Tema_isi=meet you 
      [first] => Tema_isi 
      [1] => Tema_isi 
      [rest] => meet you 
      [2] => meet you 
     ) 

    [4] => Array 
     (
      [0] => Kutip=people 
      [first] => Kutip 
      [1] => Kutip 
      [rest] => people 
      [2] => people 
     ) 

    [5] => Array 
     (
      [0] => Kutip_kitab=Efesus 
      [first] => Kutip_kitab 
      [1] => Kutip_kitab 
      [rest] => Efesus 
      [2] => Efesus 
     ) 

    [6] => Array 
     (
      [0] => Kutip_pasal=4 
      [first] => Kutip_pasal 
      [1] => Kutip_pasal 
      [rest] => 4 
      [2] => 4 
     ) 

    [7] => Array 
     (
      [0] => Kutip_ayat=28 
      [first] => Kutip_ayat 
      [1] => Kutip_ayat 
      [rest] => 28 
      [2] => 28 
     ) 

    [8] => Array 
     (
      [0] => Tema_sumber=Kiriman dari Maurits albert 
      [first] => Tema_sumber 
      [1] => Tema_sumber 
      [rest] => Kiriman dari Maurits albert 
      [2] => Kiriman dari Maurits albert 
     ) 

    [9] => Array 
     (
      [0] => Kategori:e 
      [first] => Kategori 
      [1] => Kategori 
      [rest] => e 
      [2] => e 
     ) 
) 

希望它能幫助。