Regex-Muster in JSON?
Ich versuche, eine einzige JSON-Datei, um Daten zu validieren sowohl im front - (JS) und zurück (PHP).
Ich kann nicht herausfinden, wie meine Muster in einen json-string, PHP wird nicht konvertieren.
Hier ist, was ich verwenden möchte (E-Mail-Validierung):
'{"name":"email", "pattern":"^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$"}'
Ich nehme an, es ist etwas, das im pattern nicht als string behandelt? Dieses, wie es ist, nicht zu konvertieren, um ein Objekt in PHP. Ich sollte nicht zu entkommen alles, aber ich könnte falsch sein...
Dank
Edit: habe Versucht, dies wie vorgeschlagen in den Kommentaren:
json_decode('{"name":"email", "pattern":"^[a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,15})$"}'); ==> NULL
- Ich bin mir nicht sicher, was Sie Fragen. Was bedeutet "PHP wird nicht wandeln es" bedeuten? Was ist das Ergebnis in PHP? Mit welchen code?
- json_decode(mystring)
- NÖ. Auch nicht doppelt, mein Objekt-Struktur ist in Ordnung.
- Ihre Objekt-Struktur ja, Ihre syntax nicht. jsonlint.com
- jsonlint gilt die Antwort von ljacqu. Wenn der Eigentümer das problem weiterhin bestehen, es kommt aus einem anderen Teil seines Codes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem sind die backslashes
\
. Verwenden Sie zwei, um zu signalisieren, dass es einer ist, und es wird gut funktionieren:Oben ist gültiges JSON, aber wird Probleme verursachen als PHP-string, weil
\\
wird schon werden interpretiert als eine\
bevor es übergeben wird, umjson_decode()
, und wir sind wieder da wo wir begonnen haben, aus. Als deceze freundlich darauf hingewiesen in den Kommentaren, dies kann gelöst werden, durch hinzufügen von vier umgekehrte Schrägstriche:Oder sofort, indem Sie den Inhalt von
file_get_contents()
(oder ähnlich)json_decode()
.{"name":"email","pattern":"^[a-z0-9]+(\\\\.[_a-z0-9]+)*@[a-z0-9-]+(\\\\.[a-z0-9-]+)*(\\\\.[a-z]{2,15})$"}
funktioniert. Aber die in meinem post ist gültiges JSON. Ich werde tun, einen test mit JavaScript und ich werde zu aktualisieren meinem Beitrag ein wenig.var_export(json_encode(array('pattern' => file_get_contents('regex.txt'))));
Dies werde "reverse engineer" die gültige syntax.