PHP为什么不preg_match工作?

时间:2016-11-29 18:40:06

标签: php

您好我有以下代码:

$headerOcc = substr_count($text, "[Image][");

  if($headerOcc < '1'){
    $text = $text;
  }


  for ($i=0; $i < $headerOcc; $i++) {      
      preg_match('/[Image\]\[(.*)\]/', $text, $match);
      $headerTitle = ($match[1]);           
      print($headerTitle);     
  }

我还有以下变量:

$text = "Hello world [Image][61][Image][62]Hello world";

我想知道是否有一部分文字说[image] [ID]。显然,ID将被一个数字取代,我想得到它。如何获取$ headerTitle以在大括号内返回该ID。当我打印它时,它目前给我这个:

61]**

** [图像] [62

这不是我想要的。我希望它回归:

61

62

我做错了什么,我该如何解决?

1 个答案:

答案 0 :(得分:0)

使用preg_match_all()并使用\d+获取数字:

preg_match_all('/\[Image\]\[(\d+)\]/', $text, $matches);

或者,您可以匹配NOT ],因此([^\]]+)

然后循环$matches[1]以回声等...

foreach($matches[1] as $headerTitle) {
    print($headerTitle);
}

不需要substr_count()或任何其他内容。