Das war verrückt, aber ich kann keine Antwort finden. Wir betreiben eine technische Wissensdatenbank, die manchmal Windows-Samba-Pfade für die Zuordnung zu Netzlaufwerken enthält.PHP 'addslashes' verhält sich nicht wie erwartet
Zum Beispiel: \\servername\sharename
Wenn wir Pfade enthalten, die zwei Schrägstriche haben von einander gefolgt, sie sind richtig nicht entgangen, wenn ‚addslashes‘ läuft. Meine erwarteten Ergebnisse wären "\\\\servername\\sharename
", aber es gibt "\\servername\\sharename
" zurück. Offensichtlich ist das doppelte Backslash-Präfix nur ein einzelner Schrägstrich, wenn später 'stripslashes' ausgeführt wird. Ich habe auch versucht, eine str_replace("\\", "\", $variable);
verwenden, aber es gibt "\servername\sharename"
zurück, wenn ich "\\servername\sharename"
erwarten würde.
Also mit addslashes, ignoriert es die erste Reihe von Doppel-Backslashes und mit Str_replace ändert es die Doppel-Backslashes in einen einzigen, codierten Backslash.
Wir müssen addslashes und stripeslashes für die Datenbankeinfügung ausführen; Die Verwendung von pg_escape_string funktioniert in unserem speziellen Fall nicht.
Dies läuft auf PHP 5.3.1 auf Apache.
EDIT: Beispielcode
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo addslashes($variable);
Das gibt: In the box labeled Folder type: \\servername\\sharename
EDIT: Beispielcode # 2
$variable = 'In the box labeled Folder type: \\servername\sharename';
echo str_replace('\\', '\', $variable);
Das gibt: In the box labeled Folder type: \servername\sharename
Ich würde auch würde gerne stelle fest, dass die Verwendung von einfachen Anführungszeichen oder doppelten Anführungszeichen keine anderen Ergebnisse liefert (wie zu erwarten war). Die Verwendung von beiden oder von beiden gibt mir die gleichen genauen Ergebnisse.
Hat jemand irgendwelche Vorschläge, was ich tun kann?
Ich führe nur addslashes auf eine Zeichenfolge mit zwei Backslashes und erhielt vier Backslashes als Gegenleistung. Ich denke, ein Codebeispiel wird benötigt. – StasM
Warum funktioniert pg_escape_string in Ihrem Fall nicht? – babonk
Das Codebeispiel wird abgeglichen. Ich stelle mir vor, dass dies der Unterschied zwischen der Behandlung von "" (kein Entkommen) und "" (Entkommen) zu Strings sein wird. – lotsoffreetime