Frage

Ok. Ich habe eine einfache (ish) Funktion geschrieben, ein Argument zu nehmen und das gleiche Argument mit den Gefahren HTML-Zeichen ersetzt mit ihren Zeichenentität zurück.

Die Funktion kann als Argument entweder eine Zeichenfolge, ein Array oder ein 2D-Array - 3D-Arrays oder mehr werden nicht unterstützt

.

Die Funktion ist wie folgt:

public function html_safe($input)
{   
    if(is_array($input)) //array was passed
    {
        $escaped_array = array();
        foreach($input as $in)
        {
            if(is_array($in)) //another array inside the initial array found
            {
                $inner_array = array();
                foreach($in as $i)
                {
                    $inner_array[] = htmlspecialchars($i);
                }
                $escaped_array[] = $inner_array;
            }
            else
                $escaped_array[] = htmlspecialchars($in);
        }
        return $escaped_array;
    }
    else // string
        return htmlspecialchars($input);
}

Diese Funktion funktioniert, aber das Problem ist, dass ich den Array-Schlüssel des ursprünglichen Arrays beibehalten müssen.

Der Zweck dieser Funktion war es wir buchstäblich ein Ergebnis aus einer Datenbankabfrage gesetzt Pass so könnte und alle Werte mit den HTML-Zeichen gemacht sicher zurück. Offensichtlich daher die Schlüssel im Array die Namen der Datenbankfelder und meine Funktion zur Zeit ersetzt dieses mit numerischen Werten.

Also ja, ich brauche das gleiche Argument für die Funktion mit Array-Schlüsseln übergeben, um wieder noch intakt (wenn ein Array übergeben wurde).

Hope, die Sinn macht, Vorschläge geschätzt.

War es hilfreich?

Lösung

Sie können die Rekursion verwenden, anstatt nisten Lasten von foreaches:

function html_safe($input) {
    if (is_array($input)) {
        return array_map('html_safe', $input);
    } else {
        return htmlspecialchars($input);
    }
}

Andere Tipps

Ok ich denke, ich dieses dachte ich aus mir selbst ...

meine foreach-Schleifen haben keinen Schlüssel beispielsweise angegeben waren sie:

foreach($array_val as $val)

statt:

foreach($array_val as $key => $val)

In diesem Fall konnte ich erhalten Array-Schlüssel in dem Ausgang arrrays habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top