2016-11-29 9 views
0

こんにちは、私は次のコードを持っている:ID [PHPはなぜpreg_matchが機能しないのですか?

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

私は[画像]と言うテキストの一部があるかどうかを知りたい:私も次の変数を持って

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

を]。明らかにIDは数字に置き換えられ、私はそれを取得したい。そのIDを中括弧の中に返すにはどうすれば$ headerTitleを取得できますか?

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

関連する問題