Когда вы пишете "\s"
в PHP, буквальная строка равна \s
, потому что \s
не является допустимой escape-последовательностью.
Когда вы пишете "\\s"
в PHP, буквальная строка равна \s
, потому что \\
- это допустимая escape-последовательность.
JSON, с другой стороны, выдаст ошибку для недопустимых escape-последовательностей, что является вашей проблемой.
Решение: Не пишите JSON вручную.
$json = json_encode(['regex'=> ['Hello\s+World']]);
Вывод: {"regex":["Hello\\s+World"]}
[примечание: буквенная строка, допустимый JSON]
Плохое решение - это больше проблем, чем стоит, и, вероятно, вызовет проблемы в будущем: "Hello\\\s+World"
добро пожаловать в побег из ада.