2016-11-29 229 views
0

你好,我有以下代码:PHP为什么preg_match没有工作?

$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"; 

我想找出是否有是说[图片]​​ [ID文本的一部分]。显然,ID将被一个数字取代,我想得到它。我如何获得$ headerTitle在大括号内返回该ID。目前,它给了我这个当我打印:

61]** 

** [图片] [62

这是不是我想要的。我想要它回来:

61 

62 

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

+0

在'$ text'中使用大括号'{}',但在模式中查找括号'[]'。 – AbraCadaver

+0

这就是我的错误不是一个真正的错误抱歉。我修好了 – Jelly

回答

0

使用preg_match_all()和使用\d+获得数字:

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

或者你可以匹配不],所以([^\]]+)

然后就循环$matches[1]呼应等等

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

无需为substr_count()或任何其他的东西。

+0

谢谢!有效! – Jelly

相关问题