Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Stephen Kay
January 2, 2007, 5:07 am
rate this thread
4.4.4, and now preg_replace_callback() is segfaulting when I pass it html
that is longer than 2732 bytes. This code has worked for a long time on a
Basically, I am reading an html page template into a variable with fread().
I then am doing this, which is code taken from a user example on the eval()
php manual page, which I have used successfully for quite awhile:
What it does is evaluate mixed html and php code, and output to browser. You
call it like:
return ("echo stripslashes(\"".addslashes($arr)."\");");
$string = "<? ?>".$string."<? ?>";
$string = preg_replace("/<\?=\s+(.*?)\s+\?>/", "<? echo $1; ?>",
$string = str_replace('?>', '', str_replace( array('<?php', '<?'),
'', preg_replace_callback( "/\?>((.|\n)*?)<\?(php)?/", "eval_mixed_helper",
$string) ) );
If the template that I read into $string is 2732 or less bytes, it works
like it always did. If it is 2733 or greater bytes, it segment faults.
I found this report in the bug database, but it's really old. It sounds like
the same thing, though:
Bug #25754 preg_replace() and preg_replace_callback() crash with long
Anybody know anything about this?
Again, it worked fine on the older php on a different server.
I don't really know what to do to proceed with this, it's a bit out of my
Any advice would be greatly appreciated!