Обьясните, пожалуйста, поведение preg_replace

Luf

Новичок
Обьясните, пожалуйста, поведение preg_replace

PHP:
echo strlen(preg_replace('~0.*0~','1',"00".str_repeat("2",99997)))."\n";
echo strlen(preg_replace('~0.*0~','1',"00".str_repeat("2",99996)))."\n";
Выдаёт

PHP:
0
99997
Кто сможет обьяснить, почему?


PHP 5.2.6
платформа и CLI\CGI значения не имеет.
 
Сверху