2010-09-24 77 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