2010-09-24 46 views
0

我有一個preg_match_all的問題。 雖然preg_match確實會回覆整個匹配作爲數組的第一個元素,但preg_match_all不會 - 第一個數組爲空。 至少與我選擇的模式(沒有嘗試別人,因爲它是我需要的),它不起作用。 這裏是我的代碼:preg_match_all不回覆匹配數組?

preg_match_all("/<\?\?(\t|)?translate(\t|)?;(\t|)?(.*)(\t|)?\?\?>/U", $file, $translate_info); 

本身是工作和生產的子模式相匹配的模式。

+1

你可以發佈你想對陣的數據? – Cfreak 2010-09-24 14:33:03

回答

0

根據新提供的細節更新時間:

$file = '<?? translate ; foo bar??>'; 
$res = preg_match_all('/<\?\?(\t|)?translate(\t|)?;(\t|)?(.*)(\t|)?\?\?>/U', $file, $translate_info); 
echo "res='$res'\n"; 
var_dump($translate_info); 

工作對我來說,它提供了:

res='1' 
array(6) { 
    [0]=> 
    array(1) { 
    [0]=> 
    string(26) "<?? translate ; foo bar??>" 
    } 
    [1]=> 
    array(1) { 
    [0]=> 
    string(1) " " 
    } 
    [2]=> 
    array(1) { 
    [0]=> 
    string(1) " " 
    } 
    [3]=> 
    array(1) { 
    [0]=> 
    string(0) "" 
    } 
    [4]=> 
    array(1) { 
    [0]=> 
    string(8) " foo bar" 
    } 
    [5]=> 
    array(1) { 
    [0]=> 
    string(0) "" 
    } 
} 
+0

如果我這樣做,它不會再找到東西。 如果我逃脫他們一次它只是一樣的。 我搜索 yajRs 2010-09-24 15:15:46

+0

@yajRs:我已經更新了我的答案。 – Toto 2010-09-24 15:27:51

+0

Omg,即時愚蠢,<?標籤不顯示在Firefox中。這就是爲什麼我認爲它不會工作,謝謝你! – yajRs 2010-09-24 15:55:55