ID: 29348 Updated by: [EMAIL PROTECTED] Reported By: mobanajp at yahoo dot co dot jp -Status: Analyzed +Status: Bogus Bug Type: Regexps related Operating System: Win XP PHP Version: 4.3.7 New Comment:
It's yet another ereg_* limitation: Just use PCRE instead. Previous Comments: ------------------------------------------------------------------------ [2005-01-11 07:34:14] [EMAIL PROTECTED] The following code just doesn't work: <?php echo ereg_replace("a", "a", "abc\0def\0"); ?> Because inserted null bytes (¥x00) prevents it from properly concatenating substrings delimited by the replacement. dunno if this is a limitation of ereg_* though. ------------------------------------------------------------------------ [2005-01-11 07:27:15] [EMAIL PROTECTED] It seems the way to read the page into $buf doesn't matter. Just a bug in ereg_replace() as simply replacing it by preg_replace() worked. <?php $buf = file("http://poxy.x0.com/deai/html/index.html"); $buf = implode("", $buf); $buf = ereg_replace("\r|\n", "", $buf); echo $buf; ?> This also gives a wrong result. ------------------------------------------------------------------------ [2005-01-11 06:54:36] [EMAIL PROTECTED] Read the full page first into $buf. ------------------------------------------------------------------------ [2004-07-23 11:00:44] mobanajp at yahoo dot co dot jp Description: ------------ Please compare this 3 script : 1. Simple Open a Page (everything going well) <? $buf = ""; $fp = fopen("http://poxy.x0.com/deai/html/index.html", "r"); if($fp) while(!feof($fp)) $buf.=fread($fp, 1024); echo $buf; ?> 2. Simple Open A Page and eliminate the line break (THE PAGE CUT IN MIDDLE) <? $buf = ""; $fp = fopen("http://poxy.x0.com/deai/html/index.html", "r"); if($fp) while(!feof($fp)) $buf.=fread($fp, 1024); $buf = ereg_replace("\r|\n", "", $buf); echo $buf; ?> 3. Open page using File and eliminate line-break per array elements (everything going well) <? $buf = file("http://poxy.x0.com/deai/html/index.html"); foreach($buf as $key=> $value) { $buf[$key] = ereg_replace("\r|\n", "", $buf[$key]); } $buf = implode("", $buf); $buf = ereg_replace("\r|\n", "", $buf); echo $buf; ?> Reproduce code: --------------- <? $buf = ""; $fp = fopen("http://poxy.x0.com/deai/html/index.html", "r"); if($fp) while(!feof($fp)) $buf.=fread($fp, 1024); $buf = ereg_replace("\r|\n", "", $buf); echo $buf; ?> Expected result: ---------------- the page without break line Actual result: -------------- half of the page without break line ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=29348&edit=1