Wenn ich eine Phrase, die doppelte Anführungszeichen enthält, durch diese Funktion führe, wird die Anführungszeichen durch quot ersetzt.
Ich möchte sie komplett entfernen (auch einfache Anführungszeichen). Wie kann ich die Funktion ändern, um das zu tun?
%Vor%Aktualisierung:
%Vor% Es sieht so aus, als hätte Ihre ursprüngliche Zeichenfolge die HTML-Zeichen für "
( "
). Wenn Sie also versuchen, sie zu bereinigen, entfernen Sie einfach &
und ;
und lassen den Rest der Zeichenfolge übrig quot
.
--- BEARBEITEN ---
Die einfachste Möglichkeit, nicht-alphanumerische Zeichen zu entfernen, wäre, die HTML-Zeichen mit html_entity_decode , führen Sie dann den regulären Ausdruck aus. Da Sie in diesem Fall nichts erhalten, was neu codiert werden muss, müssen Sie nicht htmlentities , aber es lohnt sich, daran zu denken, dass Sie HTML-Daten hatten und Sie jetzt raw unencoded -Daten haben.
ZB:
%Vor% Beachten Sie, dass ENT_QUOTES
die Funktion so kennzeichnet, dass "... sowohl doppelte als auch einfache Anführungszeichen konvertiert werden.".
Ich würde diese Funktion string_sanitize()
nicht aufrufen, da sie irreführend ist. Sie könnten es strip_non_alphanumeric()
nennen.
Ihre aktuelle Funktion entfernt alles, was kein Groß- oder Kleinbuchstabe oder eine Zahl ist.
Sie können nur '
und "
mit ... entfernen.
Ich denke, Ihr preg_replace-Aufruf sollte so aussehen:
%Vor%Weitere Informationen finden Sie unter html_entity_decode-Referenz .
Ihre Funktion verwendet reguläre Ausdrücke, um alle Zeichen zu entfernen, die sich von [a-zA-Z0-9] unterscheiden, und entfernt daher sicher "" oder ""
EDIT: Nun, aus der Hamish-Antwort erkenne ich, dass deine Zeichenkette eine HTML-Zeichenkette ist, so dass sie erklärt, warum "(& amp; quot) in" quot "umgewandelt werden soll. Du könntest "e
durch preg_replace oder
Tags und Links php preg-replace