Отфильтровать экранированные кавычки, при выборке preg_match
Например "parametr_name='parametr_value'". Как разобрать данную строку на две выше перечисленные части, если внутри значения сожержится \' (экранированная кавычка).
Если PHP, то скорее всего подойдёт функция parse_ini_file() или eval(). Само собой курим маны по ним. А разбирать подобную мелочь при помощи регов - извращение. Да и тормозить будет при большом числе строк.
Язык то PHP. Правильней сказать не стринговая переменная, а скорей стринговое значение в ней :). Просто есть текст из которого данную строку получаем, а потом создается хеш-массив, где соответственно то что с лева от равно - ключ, то что с права в кавычках - значение ключа.
вот пример как разбить ... по формату
key0='values0';
key1='values1';
на хешмассив
Код:
preg_match_all("/(\w*?)\s*?=\s*?\x27(.*?(\x5C\x27)*?.*?)\x27\s*?;/is",$str,$hash);
после отработки массив $hash[1] будет содержать ключи а $hash[2], значения ...
при этом в значение может содержать перевод строки и экраннированные бэкслешем одинарные кавычки (\').
Цитата:
parse_ini_file
кстати не пойдет parse_ini_file .... ибо..
1 читает только файла ... ну куда это годится .. а если я захочу скормить ему строковою переменную ?..
2 реагирует на перевод строки ... а если мне стукнкт в голову указать парамеры в одну строку?
1. Находишь первое вхождение подстроки символа = в строке.
2. Всё что дальше него до CL\LR - возвращаешь.
3. Полученное тримишь.
:)
Код:
list($key, $value) = split("=", $str);
не? :)
Есть две функции
addslashes
stripslashes
Есть такая функция,