Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 17:03   #1
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию Поиск строки в файле

Здравствуйте, господа-товарищи!
Всю голову сломала уже, может вы что подскажите!
Есть ini-файл tree.ini. Из него формируется дерево в php:
Код:
[0]
name=about
id=1
prnt_id=0
num=0
description="dsfs fsdfsdf sdfsf"

[1]
name=brend
id=2
prnt_id=0
num=0
description="dsfsdfsdfsdfsdf sdfsfsdf"

[2]
name=test
id=3
prnt_id=2
num=1
description="kykjkghjfdsgh guktgfd"
C деревом все нормально, можно бесконечное число вложений делать и т.п.
Но мне нужна функция при помощи которой можно поменять родителя...функцию я написала)))
но возникла проблемка: необходимо в файле найти две строки, например,
id=3
prnt_id=2
а заменить на:
id=3
prnt_id=2....
Вот код замены:
Код:
$content = file_get_contents("tree.ini");
$content = str_replace("id=".$id." prnt_id=".$prnt_id, "id=".$id." prnt_id=".$new_prnt_id, $content); 
file_put_contents("tree.ini",$content);
С одной строчкой он справляется, но с двумя не хочет, наверно перехода на другую строчку(((
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 06.12.2009, 17:20   #2
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Попробуй так:
Код:
$content = str_replace("id=".$id."\nprnt_id=".$prnt_id, "id=".$id."\nprnt_id=".$new_prnt_id, $content);
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 06.12.2009, 17:28   #3
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

И так я пробовола((( не ищет!только ищет без prnt_id
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 06.12.2009, 17:38   #4
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Если в файл создан под виндой то вместо /n нужно поставить /n/r
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 06.12.2009, 18:02   #5
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

не ищет.тоже пробовала
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 06.12.2009, 18:10   #6
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Блин ошибся не /n/r а \n\r. Если и это не работает, тогда я не знаю!
А не проще хранить дерево в xml формате, а не в ini???
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 06.12.2009, 18:13   #7
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

да я знаю что слеш по другому надо, пробовала,бестолку. я дерево в базе держала..все работоло, что надо было...но сказали еще в файле сделать...а тут проблемы прям с редактированием(((
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 06.12.2009, 18:13   #8
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

спасибо за помощь
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Старый 06.12.2009, 18:36   #9
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Вот так должно работать:
Код:
$content = preg_replace("/id=$id\s*prnt_id=$prnt_id/", "id=$id\n\rprnt_id=$new_prnt_id", $content);
У меня работает!
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 06.12.2009, 20:30   #10
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

Все здорово, только объясни пожалуйста, что означает \s*?
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск строки в файле getUp Общие вопросы C/C++ 7 24.10.2009 23:19
поиск строки в файле по шаблону andru15 Общие вопросы C/C++ 1 16.02.2009 18:44
Поиск строки в текстовом файле Black_Ak24 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 24.01.2009 20:30
Поиск строки в файле Gwynbleidd Общие вопросы C/C++ 1 08.10.2008 01:45