preg_match_all不回复匹配数组?

时间:2010-09-24 14:27:15

标签: php regex preg-match

我遇到preg_match_all问题。 虽然preg_match确实将整个匹配作为数组的第一个元素进行回复,但preg_match_all却没有 - 第一个数组为空。 至少我选择的模式(没有尝试别人,因为它是我需要的模式)它不起作用。 这是我的代码:

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

模式本身正在工作并产生子模式匹配。

1 个答案:

答案 0 :(得分: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) ""
  }
}