Php изменить текст в файле
Примеры сохранения и чтения текстовых данных и массивов в файлы.
Сохранение в файл
Функция file_put_contents() записывает содержимое переменной в файл, если файла не существует. то пытается его создать, если существует то полностью перезапишет его.
File_put_contents:
Fopen / fwrite:
Набор функций fopen, fwrite, fclose предназначены для более гибкой работы с файлами.
- fopen – открытие или создание файла.
- fwrite – запись данных.
- fclose – закрытие файла.
Возможные режимы fopen():
Mode | Описание |
---|---|
r | Открывает файл только для чтения, помещает указатель в начало файла. |
r+ | Открывает файл для чтения и записи, помещает указатель в начало файла. |
w | Открывает файл только для записи, помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует – пробует его создать. |
w+ | Открывает файл для чтения и записи, помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует – пытается его создать. |
a | Открывает файл только для записи, помещает указатель в конец файла. Если файл не существует – пытается его создать. |
a+ | Открывает файл для чтения и записи, помещает указатель в конец файла. Если файл не существует – пытается его создать. |
x | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт false и выдаст ошибку. Если файл не существует, попытается его создать. |
x+ | Создаёт и открывает для чтения и записи, в остальном имеет то же поведение, что и « x ». |
c | Открывает файл только для записи. Если файл не существует, то он создаётся. Если же файл существует, то он не обрезается (в отличие от « w »), и вызов к этой функции не вызывает ошибку (также как и в случае с « x »). Указатель на файл будет установлен на начало файла. |
c+ | Открывает файл для чтения и записи, в остальном имеет то же поведение, что и « c ». |
Доступно в место fwrite() используют fputs() , разницы ни какой т.к. эта функция является псевдонимом.
Как заменить определенную строку с помощью PHP. Я не знаю номера линии. Я хочу заменить строку, содержащую определенное слово.
один подход, который вы можете использовать для небольших файлов, которые могут поместиться в вашу память дважды:
краткое Примечание, PHP > 5.3.0 поддерживает лямбда-функции, поэтому вы можете удалить объявление именованной функции и сократить карту до:
теоретически вы можете сделать это одним (труднее следовать) PHP-заявлением:
другой (менее интенсивный) подход, который вы должны использовать для больших файлов:
вы должны перезаписать весь файл.
Итак, для относительно небольшого файла,чтение файла в массив, поиск слова, заменить найденную строку, написать все остальное на .
для большого файла алгоритм немного отличается, но в целом такой же.
вот почему мы предпочитаем базы данных.
вы также можете использовать многострочный режим с регулярными выражениями
это, конечно, предполагая, что это меньший документ, готовый и загруженный. В противном случае, другие ответы гораздо более "реальные" решения.
Теперь $newdata содержит содержимое файла в виде массива (используйте implode() Если вы не хотите array) со строкой, содержащей "replaceme", замененной на "withme".
если вы не знаете строку, вам придется искать по всем строкам.
если вы повторяете, просто используйте strpos и замените строку, как только она не вернет FALSE. Затем сохраните файл обратно на диск.
это хорошо, если вы ищете подстроку (ID) в строке и хотите заменить старую строку новой строкой.
код:
пример:
запуск кода изменит файл на:
ID, профессия
123,программист
124, слой кирпича
может это поможет:
вы можете превратить файл в массив, используя explode(); функция, редактировать любой элемент в массиве, используйте implode(); функция, чтобы превратить массив обратно в строку, то вы можете поместить строку обратно в файл с помощью . Это показано в следующей функции :
Как заменить элемент в строке, еще сложнее найти и заменить элемент в строке, это может быть слово, часть слова. код Какие функции существую для замены в строке!?
Я не буду обозревать все функции которые существуют! Расскажу о той, которой сам пользуюсь! Эта функция str_replace.
Поиск и замена в строке php
Как заменить один элемент строки!?
У нас есть некая строка, в которой требуется найти какой-то элемент и заменить его на другой!
Здесь текст с нижним тире_, которое_ надо заменить на обыкновенное -
Мы воспользуемся функцией str_replace
Для этой функции и множества аналогичных нужно запомнить, что внутри неё…
Нам потребуется переменная…
$переменная = "Здесь текст с нижним тире_, которое_ надо заменить на обыкновенное -";Замена str_replace будет иметь такой вид:
Как видим наше подчеркивание заменилось удачно!
Здесь текст с нижним тире - , которое - надо заменить на обыкновенное -Как заменить несколько элементов строки!?
Чем еще замечательна функция str_replace – тем, что она умеет заменять не только один элемент строки, но и несколько!
Почему я решил сегодня написать эту страницу… вчера у меня задача стояла заменить в строке несколько элементов например:
Если вы нажмете по данной ссылке и посмотрите в адресную строку, то увидите вот такой адрес…
Чтобы сто раз не повторять поместим её в переменную - она нам понадобится.
В этой строке нам нужно заменить три элемента . в общем не важно сколько будет у вас элементов и сколько их вообще нужно заменить в строке!
Поэтому я и люблю эту функцию!
У нас есть три элемента, которые мне требовалось заменить… " ? & = "
Создадим массив с элементами, которые нужно заменить в строке:
Результат замены в строке нескольких элементов на один php:
Как заменить пробелы в Php
Для того, чтобы заменить пробелы в php, нам опять потребуется:
1). Тестовый текст в переменной. в котором будут пробелы:
$objekt = "Это тестовый текст с пробелами, которые мы будем заменять, на что-то, не важно на что!";
Берем нашу функцию для замены, в первом значении функции ставим пробел. во втором.. ставим , то на что будем заменять пробел,
ну например <red>Ё</red> , и третьим будет наша переменная и выведем с помощью echo прямо здесь.
Результат поиска измены пробела на что-то:
Это Ё тестовый Ё текст Ё с Ё пробелами, Ё которые Ё мы Ё будем Ё заменять, Ё на Ё что-то, Ё не Ё важно Ё на Ё что!Как заменить слово/слова в Php
Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими словами, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова, покрасим данное слово в красный цвет!(если вы не поняли, то он кричит - "это гениально. ")
И тут внимание! Выше было показано, как можно найти, какой-то элемент в строке и заменить его! Еще можно было заменить из массива!
А что если мы заменим. массив на массив!? Интересно!? Тогда погнали!
Для этого. нам понадобится. массив $search
Далее нам потребуется массив, на который будем менять. слова будут те же. но вот мы обернем их в цвет.
Ну и собственно текст, где и будем менять массив на массив:
$subject_1 = "Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими словами, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова, покрасим данное слово в красный цвет!, а все слова, которые будут иметь в совсем составе слово «слова» , будут покрашены в синий ";
И выведем прямо здесь нашу замену слова:
Результат замены слова
Для того, чтобы заменить слово в тексте нам потребуется некий текст с некими слова ми, и желательно, чтобы это слово повторялось несколько раз! И если это слово будет найдено, то покрасим в какой-то цвет! А давайте вот этот текст, в котором и идет речь о замене слова , покрасим данное слово в красный цвет!, а все слова , которые будут иметь в совсем составе слово « слова » , будут покрашены в синийНайти первое повторяющееся слово и выделить его
Требуется найти в тексте первое повторяющиеся слово и подчеркнуть его(выделить).Предположим, что вам нужно найти первое повторяющееся слово в тексте и его же нужно подчеркнуть!
Создадим сразу несколько переменных с разным текстом:
$text = 'This is do a test - "do do do"';$text_1 = 'Это тестовый текст в котором есть повторяющееся слово текст';
$text_2 = 'Это слово и тестовый текст в котором есть повторяющееся слово и слово текст';
$text_3 = 'Это слово и тестовый текст в котором есть повторяющееся слово и слово это текст ';
Разбиваем текст по пробелу с помощью explode
Далее нам потребуется два цикла. Внутри второго чикла пишем условие, если слово в массиве будет повторяться, то создаем счетчик, по имени слова:
Далее следующее условие, если счетчик будет равен 2, то прерываем цикл :
Создаем третий цикл, в котором, как только встретится слово найденное в предыдущих двух циклах, то сразу его выделим цветом слово в массиве с помощью тега mark
for ($d = 0; $d Добавлено. в условии and $ex [$i][2] - (2 - 1 = 1) количество символов, отсекать одинарные буквы. Если требуется отсечь предлоги с двумя и менее буквами - $ex [$i][2]Выведем результаты, нахождения первого повторяющегося слова в тексте :
Пример функции, которая найдет в тексте первое встречающиеся слово и выделит его :
This is do a test - "do do do"
Это тестовый текст в котором есть повторяющееся слово текст
Это слово и тестовый текст в котором есть повторяющееся слово и слово текст
Это слово и тестовый текст в котором есть повторяющееся слово и слово это текст
Сохранил старый текст на картинке и дальше расскажу зачем. и сравните 4 строку на скрине и выше идущую строку №4:
Пример функции, которая найдет в тексте первое встречающиеся слово и выделит его : Как решил задачку.
Написал я данную функцию.
И мне нужно было куда-то ехать.
Сел на сиденье и. тут меня осенило, совсем простой способ, чтобы мы могли найти и сравнивать слово в массиве и повторяющееся слово, их просто нужно привести к одному регистру. Вроде бы такая элементарная вещь, но как-то она сразу мне не пришла в голову.
И такая функция вполне способна решить проблему "ПРОПИСНЫХ" букв в начале предложения!
Поэтому следующий пункт, где я занимался какими-то извращениями просто не нужен!
Замена слов в скобках php
Тут встретился поисковый запрос - Замена слов в скобках php - я не знаю, что конкретно вы имели ввиду задавая такой вопрос поисковику, но я тут вспомнил, замечательную фишку. которую уже использую с незапамятных времен.В чем фишка!? Как это работает . например, очень частое применение разных ссылок, привело меня к мысли, что надо создать скрипт, который будет обрабатывать, слово в скобках.
Если напишу вот так : php в коде. либо css , то никаких квадратных скобок вы не увидите. смотри скрин ниже:
Замена слов в скобках php
После обработки php скриптом, это будут обычные ссылки, слова в скобках были заменены на :
В первом случае с php:
Во втором случае с css:
Таких слов огромное количество и естественно, что запомнить их все невозможно, поэтому у меня есть кнопка, которая выводит все эти слова в других кнопках, и достаточно кнопку нажать - она вставляется с помощью скрипта js.
Поскольку довольно редкий поисковый запрос. напишите - вам интересен этот скрипт?!
Онлайн нахождение первого и повторяющихся слов
Далее мы используем форму для ввода данных, внутри уже расположен какой-то текст.
Необходимо выбрать, что будем искать :
Найти первое повторяющиеся слово в тексте. и
Найти все повторяющиеся слова в тексте.
Выбираем режим - нажимаем найти!
Скрипт - найти все повторяющиеся слова в тексте и выделить их.
Через некоторое время пришлось вернуться к этой теме, поскольку поиск всех повторяющихся слов работал несколько некорректно!
Это уже реализовано и внедрено выше пунктом - поиск всех повторяющихся слов.
Не буду рассказывать всю функцию.
А лишь основное:
Алгоритм нахождения всех двойных слов и подсветка.
Возьмем из скрипта - нахождение первого повторяющегося слова - первый цикл, удалим break;
И добавим - выделено красным(1,3) - создание массива с повторяющимися словами.
Отсекаем предлоги в два и менее знака( and $ex [$i][2] ).
for ($i = 0; $i and $ex [$i][2] )
Далее нам придется решить, как искать и сравнивать повторяющиеся такие слова, как возьмем слово "лампа" :
лампа и лампа(и любой знак препинания и др.знаки)
лампа и лампа(и любой тег html, например перенос <br>)
В общем можно много и дого рассказывать -см выше - "найти все повторяющиеся слова".
Поисковые запросы.
Php найти слово в скобках
Поисковый запрос - "php найти слово в скобках", к сожалению, этого недостаточно, найти и. что сделать!?php найти слово в скобках - подчеркнуть!? На странице рассмотрели нахождение повторяющегося слова
php найти слово в скобках - удалить!?
php найти слово в скобках - заменить!? Также была тема замены слова в скобках(скобки без разницы какие, нужно в скрипте это прописать)
php найти слово в скобках - получить текст внутри скобок. Для данного вопроса, необходимы уточнения. первое ли вхождение в строке, либо все вхождения в строке.
Заменить N-ый символ в строке php
Поисковый запрос "заменить 5 символ в строке php", "заменить 2 символ в строке php" - в общем объединим, данные поисковые запросы в один: "Заменить N-ый символ в строке php"Как это сделать!? Если речь идет о "кириллице в utf-8", то придется поднапрячься.
А если для латиницы, то вообще легко.
Раз уж пошла речь о замене 5, то и возьмем это число и фразу:
Загоним наш т@. @. �� �� �. `. � `. му элементу строки, как к ячейке массива и поставим туда, какой-то знак, пусть это будет вопросительный .
Вопрос на засыпку. почему нельзя таким образом заменить символ на несколько символов. что произойдет!?
Заменить N-ый символ на любое количество знаков.
Если вы не ответили на вопрос, почему нельзя заменить один символ на несколько символов, то ответ простой! Символ можно заменить только на 1 символ! Иначе структура переменной поломается. и замену не увидите, и все, что после этого символа, вместе с символом.
А если нужно N-ый символ строки заменить на слово!?
На предложение и т.д. да на что угодно.
Разобьем(explode) строку в массив, по тому символу, который хотим заменить :
Соединим(implode) массив в строку, в первое значение помещаем все то, на что хотим заменить. Либо туда переменную.
Под работой с файлами в PHP подразумевается чтение из файла и запись в файл различной информации. Совершенно очевидно, что работать с файлами приходится много, поэтому любой PHP-программист обязан уметь считывать из файла и записывать в файл.
Последовательность работы с файлами в PHP такая:
- Открыть файл.
- Выполнить необходимые действия.
- Закрыть файл.
Как видите, последовательность работы с файлами напоминает работу с файлами через обычный проводник. Только здесь вся работа выполняется автоматически самим PHP-скриптом.
Начнём с первого пункта - открытие файла. Файл открывается с помощью функции fopen(). Первый параметр - это путь к файлу, а второй параметр - модификатор. Давайте сразу разберём возможные модификаторы:
- a - открывает файл только для записи, причём указатель помещается в конец файла.
- a+ - то же самое, что и модификатор a, но также файл открывается ещё и для чтения.
- r - открывает файл только для чтения, а указатель устанавливается в начало файла.
- r+ - то же самое, что и модификатор r, но также файл открывается ещё и для записи.
- w - открывает файл только для записи, указатель устанавливает в начало файла и стирает всё содержимое файла.
- w+ - то же самое, что и модификатор w, только файл открывается также и для чтения.
Также различают два режима работы с файлами: бинарный (обозначается b) и текстовый (обозначается t). Если Вы работаете с обычным текстовым файлом, то выбирайте текстовый режим, а если, например, с изображением, то бинарный.
Это все основные модификаторы, которых Вам вполне хватит. Теперь давайте узнаем, как закрыть файл. Закрывается файл с помощью функции fclose().
Теперь перейдём к чтению файла с помощью функции fread(). И давайте, наконец-то, приведу пример:
<?php
$handle = fopen("files/a.txt", "rt");
$contents = '';
while (!feof($handle))
$contents .= fread($handle, 4096);
fclose($handle);
?>
В данном примере мы сначала открываем файл для чтения в текстовом режиме (модификатор rt). Функция fopen() возвращает так называемый дескриптор, с помощью которого можно общаться с файлом, и записываем его в переменную handle. Затем мы в цикле while() до тех пор, пока не достигнут конец файл, считываем содержимое каждый раз по 4096 символов, которые записываем в переменную contents. После завершения процесса считывания - закрываем файл, вновь с помощью дескриптора файла.
Теперь перейдём к записи с помощью функции fwrite():
<?php
$handle = fopen("files/a.txt", "at");
$string = "This is text";
fwrite($handle, $string);
fclose($handle);
?>
После запуска этого скрипта, в файле a.txt добавится строка "This is text".
<?php
$handle = fopen("files/a.txt", "rt");
$contents = fread($handle, 3);
echo $contents."<br />";
fseek($handle, 0, SEEK_SET);
$contents = fread($handle, 3);
echo $contents."<br />";
?>
Таким образом, мы сначала считываем 3 символа (в результате, текущее положение указателя сдвигается на 3 позиции). Затем мы устанавливаем указатель на начало файла. И вновь считываем 3 символа. Как Вы и догадались, мы два раза считали одно и тоже. То есть первый раз 3 символа, потом вернулись назад, и вновь считали 3 символа. Также если у функции fseek() заменить SEEK_SET на SEEK_CUR, то тогда второй параметр будет не устанавливать позицию указателя, а сдвигать относительно текущего местоположения. Советую даже попрактиковаться с указателями, потому что для понимания это не так просто. Также рекомендую попытаться записать что-нибудь в файл при позиции указателя, например, в самом начале файла. И обязательно объясните полученный результат.
И, напоследок, хочется привести ещё пару функций, которые позволяют работать с файлами на самом простом уровне: file_put_contens() и file_get_contents(). Функция file_put_contents() записывает в файл, а функция file_get_contents() считывает содержимое из файла. Эти функции очень просты в применении, но возможностей там уже меньше (хотя, как правило, они и не нужны):
<?php
file_put_contents("files/a.txt", "This is text 2");
echo file_get_contents("files/a.txt");
?>
В данном скрипте мы сначала записали строку "This is text 2" в файл, а потом считываем полученное содержимое и выводим его. Как видите, трудно придумать более простой способ чтения из файла и запись в файл.
Читайте также: