Bug #52500 [Opn->Bgs]: Using array_map, strip tags & nested $_POST array
| From: | johannes@php.net | Date: | Sat, 31 Jul 2010 08:59:56 +0000 |
| Subject: | Bug #52500 [Opn->Bgs]: Using array_map, strip tags & nested $_POST array | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-152995@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52500&edit=1
ID: 52500
Updated by: johannes@php.net
Reported by: jason dot gerfen at gmail dot com
Summary: Using array_map, strip tags & nested $_POST array
-Status: Open
+Status: Bogus
Type: Bug
Package: Scripting Engine problem
Operating System: Ubuntu 10
PHP Version: 5.2.14
Block user comment: N
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
this call strip_tags in a way similar to this:
strip_tags(array('level-2-1', $var1,
'level-2-2', $var2,
'level-2-3', $var3));
which gives an unexpected result.
what you need is wrapper handling the recusrion similar to
function strip_tags_recursive($data) {
if (is_array($data)) {
return array_map('strip_tags_recursive', $data);
} else {
return strip_tags($data);
}
}
$myget = strip_tags_recursive($_GET);
While all this isuntested but shouldgive you the idea.
Previous Comments:
------------------------------------------------------------------------
[2010-07-30 15:33:55] jason dot gerfen at gmail dot com
Description:
------------
When using a combination of array_map() & strip_tags to create a
localized copy of the $_POST superglobal array I am experiencing
problems if $_POST contains a nested array.
It seems to discard any secondary iteration of said nested array.
Test script:
---------------
$_POST = array('level-1-1', $var1,
'level-1-2', $var2,
'level-1-3', $var3,
'level-1-4', array('level-2-1', $var1,
'level-2-2', $var2,
'level-2-3', $var3),
'level-1-5', $var5);
$post = array_map(strip_tags, $_POST);
echo '<pre>'; print_r($post); echo '</pre>';
/* I am left with this?
level-1-1 => $var1
level-1-2 => $var2
level-1-3 => $var3
level-1-5 => $var5
*/
Expected result:
----------------
I expected a complete copy of the nested superglobal $_POST.
Actual result:
--------------
Any nested array information is getting stripped out.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52500&edit=1