Я пытаюсь иметь один файл JSON для проверки данных как спереди (JS), так и обратно (PHP). Я не могу понять, как получить свой шаблон в json-строке, PHP не будет его преобразовывать. Вот что я хотел бы использовать (проверка электронной почты):
'{"name":"email", "pattern":"^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,15})$"}'
Я полагаю, что есть что-то в шаблоне, которое не рассматривается как строка? Это как есть, не будет преобразовываться в объект в PHP. Мне не нужно было ничего избегать, но я могу ошибаться …
благодаря
Изменить: Пробовал это, как это было предложено в комментариях:
json_decode('{"name":"email", "pattern":"^[a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[az]{2,15})$"}'); ==> NULL
Проблема – обратная косая черта \
. Используйте два, чтобы сигнализировать, что есть один, и он будет работать хорошо:
{"name":"email","pattern":"^[a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[az]{2,15})$"}
json_decode()
справедливо JSON, но вызовет проблему как строку PHP, поскольку \\
уже будет интерпретироваться как один, прежде чем он будет передан json_decode()
, и мы вернемся туда, откуда мы начали. Как говорится в комментариях, так как это может быть разрешено путем добавления четырех обратных косых черт:
{"name":"email","pattern":"^[a-z0-9]+(\\\\.[_a-z0-9]+)*@[a-z0-9-]+(\\\\.[a-z0-9-]+)*(\\\\.[az]{2,15})$"}
Или сразу передав содержимое из file_get_contents()
(или аналогичного) в json_decode()
.