【问题标题】:preg_match_all doesn't reply matches array?preg_match_all 不回复匹配数组?
【发布时间】:2010-09-24 14:27:15
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以发布您尝试匹配的数据吗?

标签: php regex preg-match


【解决方案1】:

根据新的给定细节更新:

$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) ""
  }
}

【讨论】:

  • 如果我这样做,它就再也找不到东西了。如果我逃脱他们一次,那也是一样的。我搜索 ?translate bla??> 或 ?翻译布拉?? >
  • 天哪,我很愚蠢,?标签不显示在Firefox中。这就是为什么我认为它不起作用,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
相关资源
最近更新 更多