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

From: Date: Tue, 24 Oct 2017 18:56:11 +0000
Subject: RE: Doc #66765 [Ana->Asn]: strtr key replacing order
References: 1 2  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-15168@lists.php.net to get a copy of this message
What is the sense on this change? Analyzed is the memo, while assigned is just a status. Thanks Anatol > -----Original Message----- > From: kalle@php.net [mailto:kalle@php.net] > Sent: Tuesday, October 24, 2017 7:47 AM > To: doc-bugs@lists.php.net; ab@php.net > Subject: Doc #66765 [Ana->Asn]: strtr key replacing order > > Edit report at https://bugs.php.net/bug.php?id=66765&edit=1 > > ID: 66765 > Updated by: kalle@php.net > Reported by: pawel dot ulewicz at gmail dot com > Summary: strtr key replacing order > -Status: Analyzed > +Status: Assigned > Type: Documentation Problem > Package: Strings related > Operating System: Windows 7 > PHP Version: 5.5.9 > Assigned To: ab > Block user comment: N > Private report: N > > > > Previous Comments: > ------------------------------------------------------------------------ > [2016-10-12 15:40:19] cmb@php.net > > 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] ab@php.net > > 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

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