Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4667
| Path | csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Daniel Walz <daniel.walz@gmx.de> |
| Newsgroups | de.comp.lang.php |
| Subject | Frage zu array_walk_recursive |
| Date | Mon, 1 Feb 2021 20:46:11 +0100 |
| Lines | 62 |
| Message-ID | <i7r442Foke1U1@mid.individual.net> (permalink) |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | individual.net dxbQWumjw5u3UinLgz4hBgJhU2pjy0NB6MnqHM+JhD1w/zPJVw |
| Cancel-Lock | sha1:qnEZozZBoJiLdutz3or/81upXf4= |
| X-Mozilla-News-Host | news://News.individual.DE:119 |
| User-Agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 |
| Xref | csiph.com de.comp.lang.php:4667 |
Show key headers only | View raw
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