У меня есть это регулярное выражение:
preg_replace( '/\["'.$key.'"\] = (.+?);/is', '["'.$key.'"] = '.$newValue.';', $contents);
Он записывает значение массива в файл конфигурации. Мне нужно разрешить одиночные или двойные кавычки вокруг ключа массива, и я не уверен, как это сделать. Я не писал это регулярное выражение.
Вы можете заменить регулярное выражение «найти», чтобы соответствовать обоим типам котировок:
'/\[[\'"]'.$key.'[\'"]\] = (.+?);/is'
Это будет даже соответствовать:
["MegaKey'] = UberValue;
И если бы я был вами, я бы поместил этот файл конфигурации в список вещей, чтобы переписать без регулярных выражений.
Обычный способ обработки нескольких стилей цитирования состоит в том, чтобы записать их: /'a'|"a"/
, дублируя то, что находится внутри кавычек, хотя оно может очень немного отличаться (например, чтобы запретить одиночную кавычку в пределах строка с одним кавычком.
'/\[("'.$key.'"|\''.$key.'\')\] = (.+?);/is'
Вы также можете использовать обратную ссылку:
'/\[([\'"])'.$key.'\\1\] = (.+?);/is'
Ну, вы можете сделать обратную ссылку, чтобы соответствовать правильному набору использованных котировок (открыт с двойным, закрытым с двойным)
preg_replace( '/\[([\"\']+)'.$key.'\\1\]\s=\s(.+?);/is', '[\\1'.$key.'\\1] = '.$newValue.';', $contents);
\\1
соответствует используемому типу первого типа