Вот как я бы это сделал:
Разбейте задачу на этапы, которые вы хотите выполнить:
1.) Разбейте строку на запятые.
For 'VAR_SELECTED, \'Hello m\'lady\', "null"' this gives me
[0]=>"VAR_SELECTED"
[1]=>" \'Hello m\'lady\'"
[2]=>" "null""
For 'VAR_SELECTED, \'Hello "Father"\', "Hello \'Luke\'"' this gives me
[0]=>"VAR_SELECTED"
[1]=>" \'Hello "Father"\'"
[2]=>" "Hello \'Luke\'""
2.) Запустите Trim на всех трех, чтобы избавиться от любых пробелов
For 'VAR_SELECTED, \'Hello m\'lady\', "null"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"\'Hello m\'lady\'"
[2]=>""null""
For 'VAR_SELECTED, \'Hello "Father"\', "Hello \'Luke\'"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"\'Hello "Father"\'"
[2]=>""Hello \'Luke\'""
3.) Запустите str_replace ("\", "", $ text), чтобы избавиться от косой черты.(удалите пробелы ... добавлены только для удобства чтения, так что это должен быть пустой слеш и "пустая" строка)
For 'VAR_SELECTED, \'Hello m\'lady\', "null"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"'Hello m'lady'"
[2]=>""null""
For 'VAR_SELECTED, \'Hello "Father"\', "Hello \'Luke\'"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"'Hello "Father"'"
[2]=>""Hello 'Luke'""
4.) Запустите обрезку снова, только обрезку ($ text, "'" ") (убрать пробелы ... добавлено только для удобства чтения)
For 'VAR_SELECTED, \'Hello m\'lady\', "null"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"Hello m'lady"
[2]=>"null"
For 'VAR_SELECTED, \'Hello "Father"\', "Hello \'Luke\'"' this gives me
[0]=>"VAR_SELECTED"
[1]=>"Hello "Father""
[2]=>"Hello 'Luke'"
Я не проверял это, но логика звучит правильно. Быстрый и грязный способ проверить 98% всех регулярных выражений (по моему опыту)) должен использовать http://rubular.com/ Это отличный сайт. Обычно, если он начинает задыхаться от регулярного выражения, это мой первый признак того, что я должен решить проблему еще больше (это просто мнение ~ Донс огнестойкий костюм ~)