RE: [PHP] preg_replace is modifying the type of replacement parameter !!

From: Date: Tue, 11 Sep 2001 12:56:52 +0000
Subject: RE: [PHP] preg_replace is modifying the type of replacement parameter !!
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-66924@lists.php.net to get a copy of this message
I understand that RegEx works on strings, but I don't understand why this function modifies the replacement parameter as it is not pass by-reference. Nicolas -----Message d'origine----- De : Andrey Hristov [mailto:andy@anderseen.com] Envoyé : mardi 11 septembre 2001 14:34 À : php-general@lists.php.net Objet : Re: [PHP] preg_replace is modifying the type of replacement parameter !! Hmmm, RegEx work on strings, so the engine needs strings. Because of that your integers are converted to strings, if you want to give their life back make foreach ($arr as $k=>$v){ $arr[$k]+=0; } Now all are integers. Andrey Hristov IcyGEN Corporation http://www.icygen.com BALANCED SOLUTIONS ----- Original Message ----- From: "Nicolas Guilhot" <nguilhot@METabolic-EXplorer.com> To: "Php General MailingList" <php-general@lists.php.net> Sent: Tuesday, September 11, 2001 3:24 PM Subject: [PHP] preg_replace is modifying the type of replacement parameter !! > Hi guys, > > When I use preg_replace with an array of integer as the replacement > parameter, this function modifies the type of each array element to string. > I don't understand why it alters the content of the array while this > variable is not pass by reference (True or not ??). > > I have just upgraded to PHP 4.0.6 and it I don't think it was the case in > PHP 4.0.4 (the version I was using before, without this problem). > > Here is a short example that demonstrate my problem. > > <?php > $ary_pattern = array("@One@"); > $ary_replace = array(1); > $string_before = "One example"; > echo gettype($ary_replace[0]); // This line outputs 'integer' > $string_after = preg_replace($ary_pattern, $ary_replace, $string_before); > echo "<br>$string_after<br>"; > echo gettype($ary_replace[0]); // This line outputs 'string' > ?> > > Is this a bug from preg_replace or am I doing wrong somewhere? Any help > would be appreciated. > Regards. > > Nicolas Guilhot > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.general (#66924) next »