2010-11-15 85 views
3

這裏是我的代碼:PHP preg_match_all長串失敗

$long = str_repeat('a very long string text', 100); // try changing 100 to 5000 

$str = <<<STR 
<abc>a short string text</abc> 
<abc>$long</abc> 
STR; 

preg_match_all('@<abc>([^<>]+)</abc>@sU', $str, $matched); 

print_r($matched); 

和預期它的工作原理完全。但是,你已經改變了100次至5000後,運行

print_r($matched); 

而你只會得到的短字符串出現的結果。

我的問題是如何讓preg_match或preg_match_all使用大字符串文本(大至1MB或更大)?

+0

看起來像你試圖用正則表達式解析HTML/XML。 不要這樣做。有關原因,請參閱http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454。 – ThiefMaster 2010-11-15 02:30:29

回答