#38463 [NEW]: Order of replacement using array in str_replace not documented
| From: | IFokkema at Ileos dot nl | Date: | Tue, 15 Aug 2006 08:29:44 +0000 |
| Subject: | #38463 [NEW]: Order of replacement using array in str_replace not documented | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969373780@lists.php.net to get a copy of this message | ||
From: IFokkema at Ileos dot nl
Operating system: All
PHP version: Irrelevant
PHP Bug Type: Documentation problem
Bug description: Order of replacement using array in str_replace not documented
Description:
------------
Hi guys,
After a discussion in the list, I've reread the manual page
(http://www.php.net/str_replace) and the comments, checked Google, but
need some confirmation.
When using an array as the search argument in str_replace(), the array is
processed first to last. As expected, but this behaviour is not documented
and therefor not reliable for my project.
$s = "Input\r\nMore input\rSome more\nEtc";
echo str_replace(array("\r\n", "\n", "\r"), '<BR>',
$s);
This works as expected (putting exactly one <BR> between every line of
input). Related comment on the manual page is from "jr at adslate dot com
(03-Jun-2004 02:52)".
But since it's not documented, I can't rely on this. If the order of
replacement is ever switched, my code stops working properly.
Now I have to do this, to process all OS specific line breaks correctly:
$s = str_replace("\r\n", "\n", $s);
$s = str_replace("\r", "\n", $s);
echo str_replace("\n", '<BR>', $s);
Can you guys please document the order of handling the search array?
Thanks a bunch for all of your work.
--
Edit bug report at http://bugs.php.net/?id=38463&edit=1
--
Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=38463&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=38463&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=38463&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=38463&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=38463&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=38463&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=38463&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=38463&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=38463&r=support
Expected behavior: http://bugs.php.net/fix.php?id=38463&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=38463&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=38463&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=38463&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=38463&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=38463&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=38463&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=38463&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=38463&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=38463&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=38463&r=mysqlcfg