RE: [PHP-QA] ereg_replace returns wrong characters
| From: | Melvyn Sopacua | Date: | Thu, 02 May 2002 17:20:09 +0000 |
| Subject: | RE: [PHP-QA] ereg_replace returns wrong characters | ||
| References: | 1 | Groups: | php.qa |
| Request: | Send a blank email to php-qa+get-5300@lists.php.net to get a copy of this message | ||
At 17:15 5/2/2002 +0100, Liz wrote:
I was gonna say, I ran this script and it returned exactly what I thought it should.. So, Im puzzled to. Can you do a script and comment at the end what output you were expecting?Here's a good example: <?php $pat = "^([&]?)foo([&]?)$"; $string = "foo"; echo '['.ereg_replace($pat, "\\1", $string).']'; $string = '&foo'; echo '['.ereg_replace($pat, "\\1", $string).']'; $string = 'xfoo'; echo '['.ereg_replace($pat, "\\1", $string).']'; $pat = "/^([&]?)foo([&]?)$/"; $string = "foo"; echo '['.preg_replace($pat, "$1", $string).']'; $string = '&foo'; echo '['.preg_replace($pat, "$1", $string).']'; $string = 'xfoo'; echo '['.preg_replace($pat, "$1", $string).']'; ?> As soon as the match is empty, ereg_replace returns \1. An empty match IS a match however in this case. I've modified the regex, cause an OR for "it's the beginning" or "it's that character" looks confusing.
-----Original Message----- From: derick@php.net [mailto:derick@php.net] Sent: Thursday, May 02, 2002 8:57 AM To: andrei@php.net; Rui Hirokawa Cc: PHP Quality Assurance Team Mailing List Subject: Re: [PHP-QA] ereg_replace returns wrong characters Hello, as far as I know the current behavior is the right one. Andrei, can you enlighten us? Derick On Thu, 2 May 2002, Rui Hirokawa wrote:Met vriendelijke groeten / With kind regards, Webmaster IDG.nl Melvyn SopacuaI think the bug #16969 is critical one because it affects PHPlib's session id propagation in GET mode. I made a patch to fix this problem. Could I apply this fix for PHP 4.2.1RC1/PHP 4.3.0dev ? ------------------------------------------------- Bug #16959: ereg_replace returns wrong characters This is small script for testing. <?php $pat = "(^|&)foo(&|$)"; $string = "foo"; echo ereg_replace($pat, "\\1", $string); ?> In PHP <= 4.1.x, this script returns empty string. But, PHP 4.2.0 and PHP 4.2.1RC1 return '\1'. The return value in PHP >= 4.2.0 should be corrected. ereg_replace() is used for session id propagation in GETmode of PHPlib.It is not work well because it is affected by this problem. -- ----------------------------------------------------- Rui Hirokawa <rui_hirokawa@ybb.ne.jp>-------------------------------------------------------------- ---------<hirokawa@php.net>Did I help you? Consider a gift: http://www.amazon.co.uk/exec/obidos/registry/SLCB276UZU8B-------------------------------------------------------------- ---------PHP: Scripting the Web - derick@php.net All your branches are belong to me! SRM: Script Running Machine - www.vl-srm.net-------------------------------------------------------------- --------- -- PHP Quality Assurance Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Quality Assurance Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php