2010-02-07 83 views
1

目標是找到諸如<!-- content:start -->some content here<!-- content:stop -->這樣的集合並處理每個集合以將其放入數組中,但每次找到沒有匹配和回聲時我的die語句不打印任何匹配。 注意:開始和結束標記之間的內容通常跨越多行。我在做什麼錯誤preg_match_all?

這是當前正在執行的函數。

function boom($data) { 
    $number = preg_match_all("/(<!-- ([\w]+):start -->)(.*?)(<!-- \\2:stop -->)/", $data, $matches, PREG_SET_ORDER); 
    if ($number == 0) $data['content'] = $data; 
    //else unset($data); 
    foreach ($matches as $item) print_r($item)."\n\n"; // $data[$item[2]] = explode("<!-- breaker -->", $item[3]); 
    die("<code>".str_replace("\n", "<br />", htmlentities($data))."</code>"); 
    return $data; 
} 

回答

2

如果您的文本繼續多行,只是/s改性劑添加到您的模式(使.匹配換行符)。

+0

不是整個部分'(<! - ([\ w] +):start - >)'認爲第一個匹配和第二個匹配的內部([\ w] +) ? – animuson 2010-02-07 08:36:54

+0

添加了正確的模式 – 2010-02-07 08:39:57

+0

嗯,一封信使所有區別,謝謝! – animuson 2010-02-07 08:47:06