#15203 [Opn->Bgs]: ereg_replace fails on strings containing backslashes
| From: | iliaa@php.net | Date: | Wed, 14 Aug 2002 18:44:19 +0000 |
| Subject: | #15203 [Opn->Bgs]: ereg_replace fails on strings containing backslashes | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-16817@lists.php.net to get a copy of this message | ||
ID: 15203
Updated by: iliaa@php.net
Reported By: josef.svoboda@email.cz
-Status: Open
+Status: Bogus
Bug Type: Regexps related
Operating System: FreeBSD 4.2
PHP Version: 4.1.2
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
The correct way to accomplish what you are trying to do would be to use
one of the following examples:
<?php
$text="\\\\"; # this string contains two backslashes
echo "\n".preg_replace("!".preg_quote("\\\\")."!",
"\\", $text);
echo "\n".ereg_replace(addslashes("\\\\"), "\\", $text);
echo "\n".str_replace("\\\\", "\\", $text);
?>
The latter is the fastest.
Previous Comments:
------------------------------------------------------------------------
[2002-04-24 09:43:06] josef.svoboda@email.cz
I tried to replace sequence of two backslashes in $text by one
backslash. While preg_replace works, ereg_replace does not make any
change to $text.
$text="\\\\"; # this string contains two backslashes
echo "\n".preg_replace( "/\\\\\\\\/", "\\\\", $text);
# good, prints one backslash
echo "\n".ereg_replace( "\\\\\\\\", "\\\\", $text);
# bad, prints two backslashes
------------------------------------------------------------------------
[2002-02-04 02:54:23] yohgaki@php.net
The version of PHP that this bug was reported in is too old. Please
try to reproduce this bug in the latest version of PHP (available
from http://www.php.net/downloads.php
If you are still able to reproduce the bug with one of the latest
versions of PHP, please change the PHP version on this bug report
to the version you tested and change the status back to "Open".
------------------------------------------------------------------------
[2002-01-24 06:39:57] josef.svoboda@email.cz
The goal is to replace sequence of two backslashes in $text by one
backslash. While preg_replace works, ereg_replace does not make any
change to $text.
echo "preg_replace\n";
$text="\\\\";
echo "--".$text."--".strlen($text)."\n";
$text=preg_replace( "/\\\\\\\\/", "\\\\", $text);
echo "--".$text."--".strlen($text)."\n";
echo "\n";
echo "ereg_replace\n";
$text="\\\\";
echo "--".$text."--".strlen($text)."\n";
$text=ereg_replace( "\\\\\\\\", "\\\\", $text);
echo "--".$text."--".strlen($text)."\n";
./configure \
--with-mysql=/usr/local/mysql \
--with-imap=/usr/ports/new/imap \
--enable-track-vars \
--enable-trans-sid
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15203&edit=1