Фон ..
Это пользовательский ввод, поэтому мне нужно ожидать каких-то странных вещей и попытаться исправить строку перед передачей их в функции. Пользовательский ввод сохраняется в базе данных примерно так:
{"value":"O'Neil,'Smith',\"O'Reilly\",100"}
Таким образом, скрипт извлекает их из базы данных, json_decodes их, а затем теперь я пытаюсь исправить эти строки значений. Вот лучший пример того, что я могу привести.
$json = '{"value":"O\'Neil,\'Smith\',\"O\'Reilly\",100"}';
$array = json_decode($json, true);
Цель ..
Как я мог бы избежать экранирования кавычек в строках следующим образом:
O'Neil,Smith,O'Reilly,100
"O'Neil","Smith","O'Reilly",100
'O'Neil','Smith','O'Reilly',100
O'Neil,'Smith',"O'Reilly",100
Чтобы из каждого я получал следующий результат:
'O\'Neil','Smith','O\'Reilly',100
Значения могут содержать или не содержать запятые. Это может быть просто одно значение типа O'Neil
или 100
.
Я почти уверен, что preg_replace может что-то подобное, или даже preg_replace_callback, но я просто не уверен, как это сделать,
Ниже не работает вообще, но я думаю, что один из этих подходов должен работать.
$value = preg_replace('/(.*?)/', '$1', $array['value']);
$value = preg_replace_callback('/(.*?)/', 'addslashes', $array['value']);
Я также попытался взорвать строки, используя запятые и зацикливание значений, ноэто ускользает от цитат, которых я не хочу касаться.
Спасибо всем!