Doc #66765 [Opn->Ana]: strtr key replacing order

From: Date: Fri, 28 Feb 2014 11:45:27 +0000
Subject: Doc #66765 [Opn->Ana]: strtr key replacing order
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-11031@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66765&edit=1 ID: 66765 Updated by: ab@php.net Reported by: pawel dot ulewicz at gmail dot com Summary: strtr key replacing order -Status: Open +Status: Analyzed Type: Documentation Problem Package: Strings related Operating System: Windows 7 PHP Version: 5.5.9 -Assigned To: +Assigned To: ab Block user comment: N Private report: N New Comment: I can confirm that, it's across platforms - strtr('abcdef', ['a'=> '1', 'bcde'=> '2']) works - strtr('abcdef', ['abc'=> '1', 'bcde'=> '2']) bug Previous Comments: ------------------------------------------------------------------------ [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

« previous php.doc.bugs (#11031) next »