Doc #66765 [Com]: strtr key replacing order
[email protected] ("vikashsjsharmag at gmail dot com") Wed, 26 Apr 2023 06:46:24 +0000
| Newsgroups | php.doc.bugs |
|---|---|
| Message-ID | <[email protected]> |
Edit report at https://bugs.php.net/bug.php?id=66765&edit=1 ID: 66765 Comment by: vikashsjsharmag at gmail dot com Reported by: pawel dot ulewicz at gmail dot com Summary: strtr key replacing order Status: Open Type: Documentation Problem Package: Strings related Operating System: Windows 7 PHP Version: 5.5.9 Block user comment: N Private report: N New Comment: Finance Update Daily are sharing latest news about finance, business, loan, trading, share market, banking etc. More info to visit: (https://financeupdatedaily.com)github.com Previous Comments: ------------------------------------------------------------------------ [2016-10-12 15:40:19] [email protected] It seems to me this is a documentation issue. strtr() walks the string from left to right, continously replacing the longest matching sequence. ------------------------------------------------------------------------ [2014-02-28 11:45:27] [email protected] I can confirm that, it's across platforms - strtr('abcdef', ['a'=> '1', 'bcde'=> '2']) works - strtr('abcdef', ['abc'=> '1', 'bcde'=> '2']) bug ------------------------------------------------------------------------ [2014-02-24 22:26:20] pawel dot ulewicz at gmail dot com Description: ------------ It looks like strtr function replaces strings in the following order: 1) first occurences first, 2) longest keys first. I don't think it's a bad thing, but it doesn't work as documented. Here's the quation from the official docs: "The longest keys will be tried first" So, it's either a documentation problem or a bug. Test script: --------------- <?php // expecting 'bcde' to be replaced first echo strtr('abcdef', ['abc'=> '1', 'bcde'=> '2']) . "\n"; // the following two are replaced as expected, just to give more info echo strtr('abcdef', ['a'=> '2', 'abc'=> '1']) . "\n"; echo strtr('abcdef', ['abcd'=> '2', 'abc'=> '1']) . "\n"; Expected result: ---------------- a2f 1def 2ef Actual result: -------------- 1def 1def 2ef ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=66765&edit=1