![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| firedrago |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
Всем привет,
вот срожаюсь и не могу победить.....не силен я в regexpах..... есть файл с содержанием типа-
и мне надо заменять там например VAR= на #VAR=, #VAR3=.... на VAR3=123, # VAR5=... на VAR5="abrakadabra". я пробовал сделать это как-то так
так работает, но- 1. ему все равно где начинается стринг ##VAR= -он тоже находит, а коментарии он должен игнорировать 2. если б это было VAR4 то он взял бы всю строчку вместе с коментарием - тоже не желательно 3. что делать с параметром типа VAR5 я вообще не знаю, его значение на нескольких строках, а как это все заменить даже нет идеи помогите pls............. зарание благодарен! |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Можно еще раз по русски описать что на что заменять, а что не надо.
|
|||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
еще раз по русски - 1. замена не активированого (#VAR4=444) параметра ----------------------- ## # - не активный ## - коментарий VAR=111 VAR2A=222 #VAR3=333 ##VAR4= bla bla #VAR4=444 # var4 bla bla bla # VAR5="zzzzz zzzzzzzzzzzzz" ----------------------- на активный с новым значением (896) ----------------------- ## # - не активный ## - коментарий VAR=111 VAR2A=222 #VAR3=333 ##VAR4= bla bla VAR4=896 # var4 bla bla bla # VAR5="zzzzz zzzzzzzzzzzzz" ----------------------- при этом (##VAR4= bla bla) и (# var4 bla bla bla) должны оставаться не измененными т.к. это коментарий(##VAR4= bla bla) и (# var4 bla bla bla) 2.замена значения (VAR5) cо значением в кавычках текст может быть на нескольких строках ----------------------- ## # - не активный ## - коментарий VAR=111 VAR2A=222 #VAR3=333 ##VAR4= bla bla #VAR4=444 # var4 bla bla bla # VAR5="zzzzz zzzzzzzzzzzzz" ----------------------- например на ----------------------- ## # - не активный ## - коментарий VAR=111 VAR2A=222 #VAR3=333 ##VAR4= bla bla #VAR4=444 # var4 bla bla bla # VAR5="bbbb bbbbbbb bbbb bbbb" ----------------------- это основное..... а дальше я сам поробую....... |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
|
|||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
@Mal Hack - спасибо за примеры, но это немного не то, что мне надо (видать у меня с русским проблемы
итак имеем часть файла --------------------------------------------- ##HTTPS Variables HTTPSDIR="/stat/var/www" # Define the location to serve HTTPS from HTTPSCGI="yes" # Whether to enable CGI in the above path #OVPN_VERBOSITY=1 #OVPN_PUSH1="route 192.168.0.0 255.255.255.0" ##/etc/issue.net is used by SSHD, more to come NETISSUE="WARNING!!! This system is solely for the use....." --------------------------------------------- теперь как я это вижу 1. начало строки /^\s* 2. возможное наличие коментария # [#]{0,1} 3. название переменной напр. HTTPSDIR=, OVPN_VERBOSITY=, NETISSUE= на данном этапе имеем /^\\s*[#]{0,1}ПЕРЕМЕННАЯ= --------------------------------------------- ##HTTPS Variables HTTPSDIR="/stat/var/www" # Define the location to serve HTTPS from HTTPSCGI="yes" # Whether to enable CGI in the above path #OVPN_VERBOSITY=1 #OVPN_PUSH1="route 192.168.0.0 255.255.255.0" ##/etc/issue.net is used by SSHD, more to come NETISSUE="WARNING!!! This system is solely for the use....." --------------------------------------------- тут вроде все ок, но вот теперь пункты которые я не знаю как реализовать...... 4. значение переменной может быть в кавычках " или без 5. после значения (не зависимо от того в кавычках или нет) может быть коментарий типа HTTPSCGI="yes" # Whether to enable CGI in the above path #OVPN_VERBOSITY=1 # bla bla 6. значение в кавычках может содержать пробелы, буквы,цифры, слэши и т.д. HTTPSDIR="/stat/var/www" # Define the l #OVPN_PUSH1="route 192.168.0.0 255.255.255.0" 7. значение в кавычках может мыть на нескольких строках NETISSUE="WARNING!!! This system is solely for the use....." вот вроде и все... |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
||||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
у меня есть html форма для этого конфига
и если я изменяю значения в форме то она должна находить правильную переменную в файле и заменять ее на новую напр. HTTPSCGI="yes" # Whether to enable CGI in the above path >>> HTTPSCGI="no" # Whether to enable CGI in the above path если переменная была деактивирована напр. #OVPN_VERBOSITY=1 и ее активирую то должна заменяться на OVPN_VERBOSITY=1 естественно коментари должны оставаться на своих местах |
|||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
$regexp='/(^\\s*[#]{0,1}'.$item.'=("[^"]*.|[^\\n\\\\W ]*.|\\n))/m'; $item - имя переменной |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
firedrago, мне вот интересно, как это работает, если у тебя вначале строки должен символ "\" стояить, а потом буква s ноль и более раз...
|
|||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
ой, если б я знал.....как-то работает........
посмотри на картинки может понятно будет, да мне объясниш....... ![]() ![]() |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Мне картинка ничего не говорит, я скрипты запускаю и по ним работу смотрю.
|
|||
|
||||
| firedrago |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 22.9.2005 Репутация: нет Всего: 3 |
...да ты действительно прав! это там лишнее....
вот мой последний вариант (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 1. позиция в начале строки после символа конец строки (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 2. символ # может встретиться 0 или 1 раз (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 3. название моей переменной (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 4. если символ " (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 4.a. любой символ только не " повторяющийся сколько угодно раз (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) 4.b. любой символ только не новой строки (в нашем случае закрытие кавычки) (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) (4-4.b. находит строки типа VAR="1234" #VAR="12 34" все что после закрытых ковычек - игнорируется ) 5. или любой символ много раз только не (конец новая строка, не буквы, пробел) (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) (находит строки VAR=123 # bla bla #VAR=21321321 ) 6. иначе если конец строки (^[#]{0,1}VAR=("[^"]*.|[^\n\W ]*.|$)) ( находит строки VAR= ) правильно ?
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |