php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #29348 ereg_replace strange behavior
Submitted: 2004-07-23 11:00 UTC Modified: 2005-02-03 05:29 UTC
From: mobanajp at yahoo dot co dot jp Assigned:
Status: Not a bug Package: Regexps related
PHP Version: 4.3.7 OS: Win XP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mobanajp at yahoo dot co dot jp
New email:
PHP Version: OS:

 

 [2004-07-23 11:00 UTC] 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

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-01-11 06:54 UTC] sniper@php.net
Read the full page first into $buf.

 [2005-01-11 07:27 UTC] 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 07:34 UTC] 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-02-03 05:29 UTC] sniper@php.net
It's yet another ereg_* limitation: Just use PCRE instead.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 17:01:58 2024 UTC