Php заменить в файле строку

str_replace

Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .

Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .

Список параметров

Если search и replace — массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search — массив, а replace — строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.

Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.

Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.

Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.

Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).

Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject , а результатом функции также будет являться массив.

Если передан, то будет установлен в количество произведенных замен.

Возвращаемые значения

Эта функция возвращает строку или массив с замененными значениями.

Примеры

Пример #1 Примеры использования str_replace()

// присваивает: Hll Wrld f PHP
$vowels = array( «a» , «e» , «i» , «o» , «u» , «A» , «E» , «I» , «O» , «U» );
$onlyconsonants = str_replace ( $vowels , «» , «Hello World of PHP» );

// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = «You should eat fruits, vegetables, and fiber every day.» ;
$healthy = array( «fruits» , «vegetables» , «fiber» );
$yummy = array( «pizza» , «beer» , «ice cream» );

$newphrase = str_replace ( $healthy , $yummy , $phrase );

// присваивает: 2
$str = str_replace ( «ll» , «» , «good golly miss molly!» , $count );
echo $count ;
?>

Пример #2 Примеры потенциальных трюков с str_replace()

// Порядок замены
$str = «Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n» ;
$order = array( «\r\n» , «\n» , «\r» );
$replace = ‘
‘ ;

// Обрабатывает сначала \r\n для избежания их повторной замены.
echo $newstr = str_replace ( $order , $replace , $str );

// Выводит F, т.к. A заменяется на B, затем B на C, и так далее.
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘A’ ;
echo str_replace ( $search , $replace , $subject );

// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array( ‘я’ , ‘о’ );
$fruit = array( ‘яблоко’ , ‘орех’ );
$text = ‘я о’ ;
$output = str_replace ( $letters , $fruit , $text );
echo $output ;
?>

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Замечание о порядке замены

Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.

Замечание:

Эта функция чувствительна к регистру. Используйте str_ireplace() для замены, нечувствительной к регистру.

Смотрите также

  • str_ireplace() — Регистронезависимый вариант функции str_replace
  • substr_replace() — Заменяет часть строки
  • preg_replace() — Выполняет поиск и замену по регулярному выражению
  • strtr() — Преобразует заданные символы или заменяет подстроки

Источник

Как заменить конкретную строку в текстовом файле с помощью PHP?

как заменить определенную строку с помощью php. Я не знаю номер строки. Я хочу заменить строку, содержащую определенное слово.

7 ответов

Один подход, который вы можете использовать для небольших файлов, которые могут вставляться в вашу память дважды:

$data = file('myfile'); // reads an array of lines function replace_a_line($data) < if (stristr($data, 'certain word')) < return "replaement line!\n"; >return $data; > $data = array_map('replace_a_line',$data); file_put_contents('myfile', implode('', $data)); 

Быстрая заметка, PHP > 5.3.0 поддерживает функции лямбда, поэтому вы можете удалить декларацию названной функции и сократить карту до:

$data = array_map(function($data) < return stristr($data,'certain word') ? "replacement line\n" : $data; >, $data); 
file_put_contents('myfile', implode('', array_map(function($data) < return stristr($data,'certain word') ? "replacement line\n" : $data; >, file('myfile')) )); 
$reading = fopen('myfile', 'r'); $writing = fopen('myfile.tmp', 'w'); $replaced = false; while (!feof($reading)) < $line = fgets($reading); if (stristr($line,'certain word')) < $line = "replacement line!\n"; $replaced = true; >fputs($writing, $line); > fclose($reading); fclose($writing); // might as well not overwrite the file if we didn't replace anything if ($replaced) < rename('myfile.tmp', 'myfile'); >else

Источник

Заменить слова в тектовом файле

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

Сохранение и чтение из Datagridview в тектовом файле
Подскажите мне надо сделать так что бы данные из Datagridview сохранялись в папку f1 и названия.

Удление всего кроме нужной подстроки в тектовом файле
Здравствуйте! Из proxycfg нужно вытащить только прокси в формате 11.11.11.11:80 Сам proxycfg.

Найти в файле F1 все заменяемые слова и заменить их на соответствующие заменяющие слова
1.Задан типизированный файл с целочисленными компонентами и произвольное целое число b. Если для.

В файле F заменить на звездочку(*) слова в которых нету букв слова «word»
В файле F заменить на звездочку(*) слова в которых нету букв слова "word" #include <stdio.h>.

$file = fopen('filename.xml', 'r'); $text = fread($file, filesize('filename.xml')); fclose($file); $file = fopen('filename.xml', 'w'); $text = str_replace('', '', $text); $text = str_replace('что заменяем', 'на что заменяем', $text); . fwrite($file, $text); fclose($file);

ЦитатаСообщение от FunDuck Посмотреть сообщение

$file = fopen('filename.xml', 'r'); $text = fread($file, filesize('filename.xml')); fclose($file); $file = fopen('filename.xml', 'w'); $text = str_replace('', '', $text); $text = str_replace('что заменяем', 'на что заменяем', $text); . fwrite($file, $text); fclose($file);

Простите, а как сделать так, чтобы замены (на что заменяем) брались из другого файла (где одна строка = одна замена) и вставлялись последовательно в каждую строку первого файла, удовлетворяющую условию «строка заключена в теги ?

$result = strtr($text, array( 'слово1' => 'на слово 1', 'слово2' => 'на слово 2', # . ));
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
$F = file('файл с описанием замены.txt'); $Replacement = array(); if ($F) { foreach ($F as $line) { $w = explode('=', strtolower($line), 2); if (count($w) == 2) $Replacement[trim($w[0])] = trim($w[1]); } } $text = file_get_contents('source.xml'); $result = preg_replace_callback('~()([^<]+)()~i', 'my_replace_callback', $text); file_put_contents('result.xml', $result, LOCK_EX); function my_replace_callback($m) { global $Replacement; $w = strtolower(trim($m[2])); if (isset($Replacement[$w])) $w = htmlspecialchars($Replacement[$w]); return $m[1] . $w . $m[3]; }
что искать=на что заменять ааа=ббб ййй=ццц

Там 1050 замен, поэтому на составление файла с описанием замен уйдёт столько же времени, что и на выполнение всех необходимых замен в файлах вручную.

Как определить, что заменять: заменяем только то, что внутри тегов первого файла (там url-ы)
Как определить, на что это заменять: последовательно на каждую следующую строку из текстового файла «1000links.txt»
Порядок замены не важен

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
$Replacement = file('файл с описанием замены.txt'); if ($Replacement===false) { echo 'Не удалось прочитать файл с заменами'; $Replacement = array(); } $text = file_get_contents('source.xml'); $result = preg_replace_callback('~()([^<]+)()~i', 'my_replace_callback', $text); file_put_contents('result.xml', $result, LOCK_EX); function my_replace_callback($m) { global $Replacement; static $Index = 0; if (isset($Replacement[$Index])) $m[2] = htmlspecialchars($Replacement[$Index]); $Index++; return $m[1] . $m[2] . $m[3]; }

Не проверял, но должно работать.

А что, если в файле с заменами не хватит слов для замены?

Всё работает, спасибо! Отлично и без замечаний. Файл с заменами оказался меньше исходного, в результате после того, как замены кончились, остальные строки остались без изменений. Как и ожидалось
Ещё раз большое спасибо за помощь!

Люди добрые! А как заставить этот скрипт не выполняться каждый раз, если условие уже выполнено и замена значений произошла? А то он при каждой перезагрузке страницы дописывает к уже измененному значению еще одно. Например, было frame, переписали на frame1, затем перезагрузка страницы и имеем уже frame11.

$file = fopen('filename.xml', 'r'); $text = fread($file, filesize('filename.xml')); fclose($file); $file = fopen('filename.xml', 'w'); $text = str_replace('', '', $text); $text = str_replace('что заменяем', 'на что заменяем', $text); . fwrite($file, $text); fclose($file);

Заменить в файле слова синонимами
даны 2 текстовых файла f1 и f2 файл f1 содержит произольный текст. слова в файле разделены.

В файле заменить 4 разные слова
Надо в файле заменить 4 разные слова. как это сделать. Можно ли это сделать как тов массиве.

В файле заменить все слова максимальной длины на слова минимальной длины
Нужно в считанном из файла тексте заменить все слова максимальной длины на слова минимальной длины.

Заменить в файле те слова, которые можно, их синонимами
Даны два текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены.

Источник

Snip Code

Была выплата.

runcore отлично, спасибо! Куда положить очередные 100 рублей? Телефон или WM кошелек пожалуйста в почту snipcode@snipcode.ru
Комментарий добавлен 18-12-2012 в 08:18:55 ID# 84
Ответить на комментарий пользователя SnipCode.ru

Георгий Купчиков

Я именно это и искал я наверно зашёл на 138 сайтов чтоб найти подобное спасибо огромное я бы заплатил за это 400 руб )))
Комментарий добавлен 04-05-2013 в 17:21:31 ID# 172
Ответить на комментарий пользователя Георгий Купчиков

SnipCode.ru

Можете стать спонсором ) (шутка)

Заходите почаще, у нас много интересного )
Комментарий добавлен 04-05-2013 в 17:24:11 ID# 173
Ответить на комментарий пользователя SnipCode.ru

phpguru

Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
$str = iconv_strlen($str,’UTF-8′);
Я так считаю!
13-12-2013 в 12:59:38 ID# 454 посмотреть.

SnipCode.ru

Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
13-12-2013 в 13:02:55 ID# 455 посмотреть.

Сергей

поторопился, так надо в конце, пардон.
return $v[‘pass’];
>
return FALSE;
>

Сергей

Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.

function search($array,$login)
foreach ($array as $k=>$v)
if($v[‘login’] == $login) return $v[‘pass’];
>
>
return FALSE;
Так, на минутку.
Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

Пабло

Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
11-11-2013 в 17:04:39 ID# 207 посмотреть.

SnipCode.ru

ну. вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
11-11-2013 в 17:07:06 ID# 208 посмотреть.

Пабло

Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?

Мне нужна система рейтинга точно такая же как у вас=)
11-11-2013 в 17:10:56 ID# 209 посмотреть.

KorniloFF

Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
Вот код, обрезающий до последней точки:

Виктор

Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
Спасибо!
30-09-2013 в 20:34:07 ID# 204 посмотреть.

  • php.ru
  • query — 93, time — 0.18

Проект запущен 03.07.2012.
По всем вопросам: snipcode@snipcode.ru © SnipCode

Источник

Читайте также:  Create sparse matrix python
Оцените статью