RE: [PHP] preg_replace is modifying the type of replacement parameter !!
| From: | Nicolas Guilhot | 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