php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #75902 str_replace should warn when misused with nested arrays
Submitted: 2018-02-01 10:19 UTC Modified: 2020-03-09 10:55 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: anonymous at yopmail dot com Assigned: nikic (profile)
Status: Closed Package: Strings related
PHP Version: Next Minor Version OS: any
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: anonymous at yopmail dot com
New email:
PHP Version: OS:

 

 [2018-02-01 10:19 UTC] anonymous at yopmail dot com
Description:
------------
str_replace works well with a string <https://3v4l.org/oH6HQ>
or with a single-level (one-dimensional) array <https://3v4l.org/ED1hB>
but I have seen it misused with a multi-dimensional array <https://3v4l.org/tWEWt>
 in which case it does not replace anything (it is not recursive) but does not trigger any warning either (the change of behaviour between 4.3.1 and 4.3.2 comes from Bug #23654).
I would like it to at least inform us that it is being misused.
Thanks

Test script:
---------------
<?php

$a = array (
  0 => 
  array (
    'one' => 'A {bad} thing.',
    'two' => 'So far so {bad}.',
  ),
  1 => 
  array (
    'one' => 'A {bad} thing, bis.',
    'two' => 'So far so {bad}, bis.',
  ),
);

$b = str_replace('{bad}', 'good', $a);

echo '$b = ';
var_export($b);
echo ';', "\n";


Expected result:
----------------
Some notice about str_replace being misused (while keeping the result untouched).

Actual result:
--------------
No notice at all. $b is identical to $a (untouched).

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2020-03-09 10:39 UTC] anonymous at yopmail dot com
Would some dev please care to comment? It is even more inconsistent as preg_replace wasn't affected by the "fix" of Bug #23654 (see <https://3v4l.org/11lUa>)...
 [2020-03-09 10:55 UTC] nikic@php.net
-Assigned To: +Assigned To: nikic
 [2020-03-10 15:52 UTC] nikic@php.net
Automatic comment on behalf of nikita.ppv@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=e8678fcb42c5cb1ea38ff9c6819baca74c2bb5ea
Log: Fixed bug #75902
 [2020-03-10 15:52 UTC] nikic@php.net
-Status: Assigned +Status: Closed
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Sep 16 18:01:30 2024 UTC