#29348 [Ana->Bgs]: ereg_replace strange behavior
| From: | sniper@php.net | Date: | Thu, 03 Feb 2005 04:29:17 +0000 |
| Subject: | #29348 [Ana->Bgs]: ereg_replace strange behavior | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-73354@lists.php.net to get a copy of this message | ||
ID: 29348
Updated by: sniper@php.net
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] moriyoshi@php.net
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] moriyoshi@php.net
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] sniper@php.net
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