Frage

zu kämpfen mit einem Schrägstrich durch ein anderes Symbol wie Ersetzen ‚.-.‘ nur um die Position der Schrägstriche angeben, da ich nicht eine Zeichenfolge wie senden könnte ‚C \ xampp \ etc.‘ durch url als GET-Variable so dass ich dachte, dass ich zuerst die Schrägstriche in dieser Zeichenfolge durch ein anderes Symbol ersetzen würde, dann durch url senden, und sie dann in Schrägstrichen in der PHP-Datei, dass Griffe ersetzen zurück. Obwohl wäre es eine bessere Art und Weise sein, wie Strings durch URL zu schicken? Weil, wenn ich versuche, ein Skript wie:

$tmp_name = preg_replace("\", ".-.", $_FILES['uploadfile']['tmp_name']);

Es verwandelt sich in einen PHP-Fehler, wie \ auch als Trennzeichen verwendet wird ..

Könnte mir jemand helfen auf diese aus?

Vielen Dank im Voraus!

Btw, wenn ich in der Lage sein würde eine vollständige Palette URL zu senden, das ganze Problem gelöst werden würde, aber ich glaube nicht, es ist möglich?

War es hilfreich?

Lösung

Die Regex in preg_replace verwendet werden, sollten in einem Paar von Trennzeichen eingeschlossen werden und auch anstelle von \\\ mit \ Versuchen Sie, wie:

$tmp_name = preg_replace("{\\\}", ".-.", $_FILES['uploadfile']['tmp_name']);

EDIT:

die Substitution umkehren Sie tun können:

$str = preg_replace('{\.-\.}',"\\",$str);

Sie müssen die . entkommen einen wörtlichen Punkt entsprechen.

Andere Tipps

Verwendung urlencode() / urldecode().

echo urlencode('C:\xampp\etc'); // C%3A%5Cxampp%5Cetc

BTW: Das klingt wie eine große Sicherheitslücke (Senden absolute Pfade auf Anfrage)


PS: preg_replace() für regulären Ausdrücke ist. Versuchen str_replace() beim nächsten Mal.

  

Btw, wenn ich in der Lage sein würde eine vollständige Palette URL zu senden, das ganze Problem gelöst werden würde, aber ich glaube nicht, es ist möglich?

Das ist einfach. PHP:

$url = 'http://example.com/?array=' . urlencode(serialize($array)); // html
$array = unserialize($_GET['array']); // server side

oder Javascript:

url = "http://example.com/?array=" + encodeURIComponent(JSON.stringify(array)); // client
$array = json_decode($_GET['array']); // server

(für Javascript Sie suchen müssen bis ob encodeURIComponent korrekt ist, und Sie müssen die offizielle JSON-Bibliothek als auch)

Wenn Sie nicht einen regulären Ausdruck (was du bist nicht), sollten Sie str_replace verwenden stattdessen:

$tmp_name = str_replace('\\', '.-.', $_FILES['...']);

Beachten Sie, dass Sie die \ mit einem anderen \ zu entkommen (sonst würde es die folgenden ' entkommen).

Wie für die Begrenzungsfehler - reguläre Ausdrücke müssen eingeschlossen in Trennzeichen werden, zum Beispiel /foo/ (/ ist das Trennzeichen, foo das Muster ist). Aber auch hier gibt es keine Notwendigkeit für Sie zu nutzen oder sich Sorgen über regexps

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