[PHP-BUG] Bug #71178 [NEW]: preg_replace: non-zero array keys for pattern/replace do not work and break BC

[email protected] ("pglewis13 at gmail dot com")
Newsgroups php.bugs
Message-ID <[email protected]>
From:             pglewis13 at gmail dot com
Operating system: Linux
PHP version:      7.0.1
Package:          PCRE related
Bug Type:         Bug
Bug description:preg_replace: non-zero array keys for pattern/replace do not work and break BC

Description:
------------
If pattern and replace are single element arrays and the keys are
non-zero integers, then preg_replace may modify the replace parameter. 
In the case of the test script, the replace parameter has an empty
string inserted as the 0th entry after the call to preg_replace.  

I have not tested string keys or with more than one array element.  

Test script:
---------------
https://gist.github.com/pglewis/42c7a6e3da5e465793e0

Expected result:
----------------
I could find no caveats regarding keys in the documentation, so the
expectation is that the replace parameter should not be modified in any
way by a call to preg_replace.  

Actual result:
--------------
An empty string is inserted into the replace parameter as an extra array
element, resulting in an unexpected result and breaking backward
compatibility.  

-- 
Edit bug report at https://bugs.php.net/bug.php?id=71178&edit=1
-- 
Try a snapshot (PHP 5.4):   https://bugs.php.net/fix.php?id=71178&r=trysnapshot54
Try a snapshot (PHP 5.5):   https://bugs.php.net/fix.php?id=71178&r=trysnapshot55
Try a snapshot (trunk):     https://bugs.php.net/fix.php?id=71178&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=71178&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=71178&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=71178&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=71178&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=71178&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=71178&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=71178&r=notwrong
Not enough info:            https://bugs.php.net/fix.php?id=71178&r=notenoughinfo
Submitted twice:            https://bugs.php.net/fix.php?id=71178&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=71178&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=71178&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=71178&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=71178&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=71178&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=71178&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=71178&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=71178&r=mysqlcfg
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.