#24645 [Bgs]: ereg_replace fails to strtolower replaced string

From: Date: Mon, 14 Jul 2003 14:39:51 +0000
Subject: #24645 [Bgs]: ereg_replace fails to strtolower replaced string
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-43952@lists.php.net to get a copy of this message
ID: 24645 User updated by: nek at capsule dot org Reported By: nek at capsule dot org Status: Bogus Bug Type: Regexps related Operating System: Linux PHP Version: 4.3.1 New Comment: you mean something like : <?php $newsaff = "<A HREF=\"JAVASCRIPT:COMMENT()\">THIS IS A TEST LINK</A>"; $newsaff = ereg("HREF=\"([^\"]+)\"",$newsaff,$newsreplace); for ($i=1;$i<sizeof($newreplace);$i++) print $newsaff; ?> Previous Comments: ------------------------------------------------------------------------ [2003-07-14 09:21:06] jay@php.net That's correct, so this is bogus. Try using ereg()/preg_match() with the optional registers used in the third argument to get the results you're looking for. J ------------------------------------------------------------------------ [2003-07-14 09:19:55] nek at capsule dot org well, maybe the matching string should be considered as a normal one, so we can use some functions on it. this would render ereg_replace function even more powerfull, isn't it ? ------------------------------------------------------------------------ [2003-07-14 09:09:01] b_ulrich at t-online dot de Using strtolower("HREF=\"\\1\"") as parameter is like using "href=\"\\1\"" directly. First the strtolower is processed and then that result is used as parameter. You have to change your search/replace pattern to get what you want. The function works correct. ------------------------------------------------------------------------ [2003-07-14 08:39:01] nek at capsule dot org sorry, it's php 4.3.1 and not 4.3.2 ------------------------------------------------------------------------ [2003-07-14 08:37:18] nek at capsule dot org Description: ------------ Hi, i'm trying to replace a portion of string by its strtolowered equivalent see reproduce code and results below : it should give "href=javascript:comment()" but only "HREF" is lowered, not the matching string \1 Reproduce code: --------------- <?php $newsaff = "<A HREF=\"JAVASCRIPT:COMMENT()\">THIS IS A TEST LINK</A>"; $newsaff = ereg_replace("HREF=\"([^\"]+)\"",strtolower("HREF=\"\\1\""),$newsaff); print $newsaff; ?> Expected result: ---------------- <A href="javascript:comment()">THIS IS A TEST LINK</A> Actual result: -------------- <A href="JAVASCRIPT:COMMENT()">THIS IS A TEST LINK</A> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24645&edit=1

« previous php.bugs (#43952) next »