Edit report at https://bugs.php.net/bug.php?id=38685&edit=1

 ID:                 38685
 Updated by:         [email protected]
 Reported by:        paulschreiber at gmail dot com
 Summary:            ER: Allow str_replace with string subject, array
                     replace
-Status:             Open
+Status:             Analyzed
 Type:               Feature/Change Request
-Package:            Feature/Change Request
+Package:            *General Issues
 Operating System:   any
 PHP Version:        4.4.4
 Block user comment: N
 Private report:     N

 New Comment:

It is a feature request, not a bug, and one that is rather iffy as far as I am 
concerned. It is likely to sit here another 7 years unless accompanied by a 
solid 
implementation and some better rationale on why we should encourage people to 
use 
something like this over the native prepare/execute syntax provided by the 
databases or even the emulated prepare/execute we provide via PDO.


Previous Comments:
------------------------------------------------------------------------
[2013-03-17 03:57:58] valentiny510 at yahoo dot es

For Paul: The syntax is incorrect.
For PHP Team: 7 years and is still open ???

------------------------------------------------------------------------
[2006-09-01 22:46:52] paulschreiber at gmail dot com

Description:
------------
The PHP docs for str_replace say:

"If search and replace are arrays, then str_replace() takes a value from each 
array and uses them to do search and replace on subject. If replace has fewer 
values than search, then an empty string is used for the rest of replacement 
values. If search  is an array and replace is a string, then this replacement 
string is used for every value of search. The converse would not make sense, 
though."

I think the converse makes sense in some cases. Here is an example:
$result = str_replace("?", array("Joe", "Smith"), "SELECT * FROM people WHERE 
first = ? AND last = ?");

(Yes, if you were doing real database work, you'd need to escape everything.)

It would be nice if PHP supported this.

Reproduce code:
---------------
$result = str_replace("?", array("'Joe'", "'Smith'"), "SELECT * FROM people 
WHERE first = ? AND last = ?");
print $result;


Expected result:
----------------
SELECT * FROM people WHERE first = 'Joe' AND last = 'Smith'


Actual result:
--------------
PHP Notice:  Array to string conversion in /Users/paul/- on line 2

Notice: Array to string conversion in /Users/paul/- on line 2
SELECT * FROM people WHERE first = Array AND last = Array



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=38685&edit=1

Reply via email to