Регулярное выражение | PHP фиксирует каждую недопустимую двойную кавычку в строке json ⇐ Php
Регулярное выражение | PHP фиксирует каждую недопустимую двойную кавычку в строке json
Для получения следующей строки json: {"key":"value"ue","other":"invalid ""quo"te"
Я хочу зафиксировать каждую недопустимую двойную кавычку внутри значений. В примере есть одна двойная кавычка в значении свойства key и три двойные кавычки в свойстве Other.
Я видел несколько комментариев, в которых отмечалось, что это неверный json (правильный) и что предоставленный json должен быть действительным перед получением. Однако в моем случае это невозможно.
Предполагая, что это произойдет только со значениями, а не с ключами, я думаю, можно с уверенностью предположить, что начальной последовательностью будет двоеточие, за которым следует двойная кавычка. Завершающей последовательностью будет двойная кавычка, за которой следует запятая ИЛИ закрывающая фигурная скобка.
Я попробовал следующее регулярное выражение (среди многих других версий), которое является наиболее близким к моему желаемому решению:
/:\s?".*?(").*?[,}]/i
Это правильно фиксирует одну двойную кавычку в свойстве key, но фиксирует только первую двойную кавычку в свойстве «other». Я бы хотел, чтобы он захватывал две другие двойные кавычки, а также отдельный захват.
Еще одно регулярное выражение, которое я пробовал: /:\s?".*?("{1,})[^,}].*?[,}]/i Это делает то же самое, что и первое регулярное выражение, но захватывает две двойные кавычки за один захват (не желательно)
Моя цель в конечном итоге — захватить каждую двойную кавычку отдельно, поэтому получается четыре захвата. Что, по моему мнению, мне нужно для достижения этой цели, так это способ сделать группу захвата «жадной»? чтобы он не останавливался на первой двойной кавычке.
Как я могу этого добиться?
Для проверки регулярного выражения я использую следующий PHP-код:
$text = '{"key":"value"ue","other":"invalid ""quo"te"}'; $pattern = '/:\s?".*?(").*?[,}]/i'; preg_match_all($pattern, $text, $matches, PREG_OFFSET_CAPTURE); эхо '' . print_r($соответствует, правда) . '';
Для получения следующей строки json: {"key":"value"ue","other":"invalid ""quo"te"
Я хочу зафиксировать каждую недопустимую двойную кавычку внутри значений. В примере есть одна двойная кавычка в значении свойства key и три двойные кавычки в свойстве Other.
Я видел несколько комментариев, в которых отмечалось, что это неверный json (правильный) и что предоставленный json должен быть действительным перед получением. Однако в моем случае это невозможно.
Предполагая, что это произойдет только со значениями, а не с ключами, я думаю, можно с уверенностью предположить, что начальной последовательностью будет двоеточие, за которым следует двойная кавычка. Завершающей последовательностью будет двойная кавычка, за которой следует запятая ИЛИ закрывающая фигурная скобка.
Я попробовал следующее регулярное выражение (среди многих других версий), которое является наиболее близким к моему желаемому решению:
/:\s?".*?(").*?[,}]/i
Это правильно фиксирует одну двойную кавычку в свойстве key, но фиксирует только первую двойную кавычку в свойстве «other». Я бы хотел, чтобы он захватывал две другие двойные кавычки, а также отдельный захват.
Еще одно регулярное выражение, которое я пробовал: /:\s?".*?("{1,})[^,}].*?[,}]/i Это делает то же самое, что и первое регулярное выражение, но захватывает две двойные кавычки за один захват (не желательно)
Моя цель в конечном итоге — захватить каждую двойную кавычку отдельно, поэтому получается четыре захвата. Что, по моему мнению, мне нужно для достижения этой цели, так это способ сделать группу захвата «жадной»? чтобы он не останавливался на первой двойной кавычке.
Как я могу этого добиться?
Для проверки регулярного выражения я использую следующий PHP-код:
$text = '{"key":"value"ue","other":"invalid ""quo"te"}'; $pattern = '/:\s?".*?(").*?[,}]/i'; preg_match_all($pattern, $text, $matches, PREG_OFFSET_CAPTURE); эхо '' . print_r($соответствует, правда) . '';
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как передать пробел и двойную кавычку вместе в параметрах командной строки MSI?
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как правильно записать кавычку PHP внутри строки кавычек в файл .json [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Php помещает пробел перед заглавными буквами в строке (регулярное выражение)
Anonymous » » в форуме Php - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-