Re: Limitations of preg_replace?
| From: | Robin Vickery | Date: | Thu, 25 Oct 2007 09:37:13 +0000 |
| Subject: | Re: Limitations of preg_replace? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-263636@lists.php.net to get a copy of this message | ||
On 25/10/2007, Werner Schneider <wuschba@yahoo.de> wrote:
> Hi.
>
> Are there any limitations of preg_replace and is there
> a way to change them (for example with ini_set)?
>
> I got a php 4.4.7 on a linux-webhoster which crashes
> without error-message on this script:
> <?php
> $txt = "";
> for ($i = 0; $i < 2000; $i++)
> { $txt .= "<a href=\"helloworld.htm\" title=\"my
> title\"><img src=\"/mypic.jpg\"></a><br />\n";
> }
> $txt =
> preg_replace("/<a(.*)href=\"\\index.htm\">/isU",
> "<a$1href=\"\\\">", $txt);
> print $txt;
> ?>
> If I loop only 1000 times or don't use (.*)->$1 on the
> regular expression, it works. It works as well on a
> local WAMP-Installation.
>
> Any ideas about that?
Yeah, the backtrack limit.
But
1. it's not configurable in PHP 4
2. You'd be better off writing your regexp so it doesn't have to
backtrack all the way
through a 150KB string.
Try replacing .* with [^>]*
-robin