Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4667
| From | Daniel Walz <daniel.walz@gmx.de> |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | Frage zu array_walk_recursive |
| Date | 2021-02-01 20:46 +0100 |
| Message-ID | <i7r442Foke1U1@mid.individual.net> (permalink) |
Hallo,
für eine simple Template-Klasse bzw. Singleton brauche ich eine Funktion
zum escapen der Platzhalter-Variablen. Diese werden in einem Array
übergeben, das auch geschachtelt sein kann. Ich habe mir dafür diese
rekursive Funktion geschrieben:
public static function escape($var)
{
$esc_var = [];
if (is_array($var))
{
foreach ($var as $platzhalter => $ersetzung)
{
if (is_array($ersetzung))
{
$esc_var[$platzhalter] = self::escape($ersetzung);
}
else
{
$esc_var[$platzhalter] = htmlspecialchars($ersetzung);
}
}
return $esc_var;
}
else
{
return htmlspecialchars($var);
}
}
Danach fiel mir auf, dass es ja in PHP bereits eine Funktion
array_walk_recursive gibt, so dass das hier das gleiche zu machen scheint:
public static function escape($var)
{
if (is_array($var))
{
array_walk_recursive($var, function (&$value, $key)
{
$value = htmlspecialchars($value);
});
return $var;
}
else
{
return htmlspecialchars($var);
}
}
Meine Frage:
Machen die beiden Funktionen tatsächlich das gleiche (bei all meinen
Tests bisher ja), oder habe ich irgendwas übersehen?
Auf php.net steht als Warnung groß "* THIS FUNCTION ONLY VISITS LEAF
NODES *, aber das entspricht ja hier genau dme gewünschten Verhalten,
wenn ich es richtig verstehe.
Gruß
Daniel
Back to de.comp.lang.php | Previous | Next | Find similar
Frage zu array_walk_recursive Daniel Walz <daniel.walz@gmx.de> - 2021-02-01 20:46 +0100
csiph-web