Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: заменить слово в файле
Форумы портала PHP.SU » PHP » Программирование на PHP » заменить слово в файле

Страниц (1): [1]
 

1. darkstar - 15 Декабря, 2009 - 01:42:22 - перейти к сообщению
Есть например файл text.txt c содержимым: привет меня зовут <b>Файл</b> а кто ты.
Так вот нужно заменить слово Файл на свое и сохранитьв text.txt, как это зделать подскжите ?
2. Champion - 15 Декабря, 2009 - 08:47:51 - перейти к сообщению
Ты скажи, в чем проблема. Считать не получается? Строку заменить? Записать?
3. darkstar - 15 Декабря, 2009 - 09:51:45 - перейти к сообщению
невыходит строку заменить, скрипт дописут кучю хлама в самый конец файла.
4. Champion - 15 Декабря, 2009 - 10:22:51 - перейти к сообщению
Прочитай пожалуйста, как правильно задавать вопросы в самой верхней теме этого раздела.
5. Viper - 15 Декабря, 2009 - 10:45:40 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $string = 'привет меня зовут <b>Файл</b> а кто ты.';
  2. echo preg_replace('/<b>(.*?)<\/b>/i', '<b>Мой файл</b>', $string);
6. darkstar - 15 Декабря, 2009 - 11:57:29 - перейти к сообщению
есть такое
PHP:
скопировать код в буфер обмена
  1.  
  2. $br = 'zamena';
  3. $file =  fopen("test.txt","a+");
  4. $string = file("test.txt");
  5. preg_match("/<b>(.*?)<\/b>/i",$string[0],$out);
  6. $outfile = preg_replace('/$out[1]/', $br, $string[0]);
  7. fputs ($file,$outfile);
  8. fclose ($file);
  9.  

но как видно неменяет он в данные в файле, между тегами граблю потому что это значение может быть разным.
7. Viper - 15 Декабря, 2009 - 12:37:43 - перейти к сообщению
darkstar мануалы иногда читать нужно. из начально поставленной задачи
darkstar пишет:
Так вот нужно заменить слово Файл на свое


код приведенный мной будет верен, т.к. возвращает элемент массива. а так как вы передаете массив, а не строку, то соответственно нужно и возвращать как массив, а не элемент массива.
и непонятно зачем сначала делать preg_match для поиска, если preg_replace и ищет и заменяет.

PHP:
скопировать код в буфер обмена
  1. $file = fopen('test.txt','a+');
  2. $array_content = file('test.txt');
  3. $array_result = preg_replace('/<b>(.*?)<\/b>/i', '<b>Мой файл</b>', $array_content);
  4. echo $array_result[0];


да и ещё момент. т.к. у вас на входе массив, то замена будет произведена только в первом элементе. для того чтобы заменяло в всем массиве, нужно либо массив замен для каждого элемента, либо через цикл протись по каждому элементу и заменить.

 

Powered by ExBB FM 1.0 RC1