Php изменить текст в файле
И из него нужно достать текст, который находится между тегами и .
Проще всего это сделать с помощью регулярных выражений:
Функция preg_match_all() принимает 3 параметра: шаблон поиска, сам текст и переменную, в которую эта функция сохранит результаты поиска.
Поскольку функция возвращает количество найденных строк (или false в случае ошибки), мы можем сразу подставить её в оператор if.
Массив с результатами поиска (в нашем случае $result) состоит из двух частей: в $result[0] будут найденные строки вместе с открывающим и закрывающим тегами span, а в $result[1] будут те же строки без тега span, т.е. тот текст, что находится в круглых скобках.
Маска регулярного выражения находится между вертикальными чертами | . В шаблоне (.*) точка означает любой символ, звёздочка - любое количество символов (т.е. суммарно получаем "любое количество любых символов").
Скобки говорят, что найденный текст нам нужно получить отдельно. Без скобок мы получим только $result[0], а $result[1] не будет существовать.
Чтобы найти только не пустые теги, можно заменить .* на .+ . Плюсик означает любое количество символов, но не меньше одного.
Uis - модификаторы. U означает работу с UTF-8, i - регистронезависимый поиск, s - что символ точка включает в себя переносы строк, т.е. поиск будет по всем строкам, а не по одной.
Чтение файла: file()
Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.
Создадим в корне сайта файл data.txt со следующим содержимым:
Теперь запустим скрипт index.php со следующим кодом:
При запуске этого скрипта мы получим в браузере:
Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.
Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :
Теперь у всех строк будет по 5 символов.
Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :
Разумеется, мы можем передать сразу две константы:
Копирование, перенос и удаление файла
Для удаления файлов используется функция unlink() :
Чтобы скопировать файл, используем функцию copy() :
Для переименования и переноса файла в другую папку используется функция rename() :
Примечания относительно редакторов, прав доступа и перезагрузки сервера
php.ini - это файл конфигурации, и поскольку он часто размещается на сервере, можно столкнуться с несколькими проблемами. Например, отсутствие доступа к файлу с помощью обычных удобных инструментов или возможности сохранить внесенные изменения:
Открытие без sudo приводит к выводу предупреждения о запрете на запись и невозможности сохранить изменения
Для редактирования nano - лучший текстовый редактор. Все его горячие сочетания клавиш прописаны на экране. Поэтому я часто редактирую файл php.ini на удаленном сервере с помощью команды:
Я использую nano , чтобы открыть файл php info по адресу /etc/php5/fpm/php.ini .
Что такое sudo ? На хорошо настроенном сервере обычные пользователи не могут изменять файлы конфигурации. sudo - это способ, с помощью которого можно временно запрашивать права доступа уровня « администратор » или « супер пользователь » ( sudo - это сокращение от «super user do».) Таким образом можно будет сохранить файл php.ini из nano . Без этого вы, вероятно, не сможете изменить этот файл.
Создание и удаление файлов
Чтобы создать файл php , можно использовать функцию fopen() в режиме доступа « w » или « w+ ». Или функцию touch () . Она устанавливает время изменения файла. При отсутствии элемента с искомым именем он будет создан. Ее синтаксис:
Для создания копии файла используется функция copy() . В качестве аргументов она принимает имя оригинала и файла, куда нужно скопировать содержимое. Если он не существует, то будет создан. Синтаксис функции:
Удалить файл можно с помощью функции unlink() . Ее синтаксис:
Значения параметров конфигурации PHP, полезные для WordPress разработчиков
Лично мне регулярно приходится сталкиваться со значениями php info файла для max_execution_time , memory_limit , upload_max_filesize и post_max_size . Существуют сотни значений, которые устанавливаются в файле php.ini и файлах различных расширений, с которыми работает PHP . Но только с этими четырьмя параметрами мне регулярно приходится иметь дело. Краткое описание каждого из них:
Много информации
На приведенном выше скриншоте показан первый блок данных, который выводится при вызове функции localhost info php . Большинство из этих данных для меня, если честно - шум. Но пятая строка очень важна: она сообщает, какой файл конфигурации PHP загружен - в нашем случае это /etc/php5/fpm/php.ini . Строка помечена как “ Loaded Configuration File ”. Если нужно изменить настройки сервера, предоставившего эту страницу, нужно редактировать этот файл.
Проверка прав доступа
Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:
phpinfo(): получить информацию о PHP
Функция phpinfo() проста в использовании. Создайте PHP-файл на своем сервере и разместите в нем вызов этой функции:
Затем заходите на эту страницу через браузер. И все.
Продвинутый BBCode с атрибутами
Иногда описанного выше функционала бывает недостаточно, например если нужно передать в функцию какие-либо параметры:
Вместо собственного велосипеда рекомендую использовать готовую библиотеку Shortcode.
В ней из коробки уже есть возможность использования атрибутов, а также события и куча других полезных фишек. Вот как может выглядеть пример обработки тега с атрибутами:
Только нужно учесть, что в Shortcode по-умолчанию парсятся атрибуты в квадратных скобках [] . Я и сам использую квадратные, но в примерах использовал фигурные, чтобы избежать возможных конфликтов тегов на этом сайте.
С помощью функции file_get_contents() можно получить содержимое файла:
Также мы можем получить html-код какой-либо страницы в интернете:
Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.
Файлы php
Файлы с расширением php содержат в себе код написанный, на одноименном языке программирования. В отличие от других языков, php является серверным языком программирования. То есть он выполняется на стороне сервера. Поэтому для отладки его кода на клиентской машине должен быть установлен локальный сервер.
Для работы с файлами php используются специальные приложения – программные редакторы. Наиболее распространенными из них являются:
- Dreamweaver.
- PHPEdit.
- Eclipse PHP Development.
При создании сайтов на основе php может потребоваться многократное использование программного кода. В таких ситуациях удобно подключать уже готовые решения, находящиеся в другом файле. Для этого используется конструкция include . Ее синтаксис:
Вывод фрагментов исходного HTML и PHP кода
Частая проблема разработчиков, которым хочется вести свой блог. Есть HTML статья, внутри которой некоторые фрагменты кода нужно прогонять через htmlspecialchars() , чтобы они выводились как обычный текст:
Теперь в этом нет ничего сложного:
Открытие и закрытие файлов
В php все операции с файлами осуществляются в несколько этапов:
- Открытие файла;
- Редактирование содержимого;
- Закрытие файла.
Для открытия файла используется функция fopen() . Ее синтаксис:
- string mode – указывает режим открытия файла. Принимаемые аргументом значения:
- r – файл открыт только для чтения, файловый указатель устанавливается в начале;
- r+ – файл открыт для чтения и записи;
- w – создается новый файл только для записи. Если файл с таким именем уже существует, в нем происходит автоматическое удаление всех данных;
- w+ - создается новый файл для записи и чтения. При существовании такого файла происходит полная перезапись его данных на новые;
- a – файл открыт для записи. Указатель устанавливается в конце. То есть запись в файл php начнется не с начала, а с конца;
- a+ – открытие файла в режиме чтения и записи. Запись начнется с конца;
- b – режим работы с файлом, содержащим в себе двоичные данные (в двоичной системе исчисления). Этот режим доступен только в операционной системе Windows.
Для закрытия доступа к файлу служит функция fclose () . Синтаксис:
int fclose (int file) , где int file – дескриптор сайта, который нужно закрыть.
После каждого чтения или записи файл нужно закрывать этой функцией. Иначе остается открытым поток, созданный для файла. А это ведет к лишнему расходу серверных мощностей.
Конфигурация с помощью php.ini и phpinfo()
В файле php.ini содержится много других параметров. Вы можете увидеть почти все из них, запустив команду phpinfo() . Но в основном требуется изменить только небольшой набор значений. Все остальное я оставляю на усмотрение мудрых разработчиков PHP и других экспертов по конфигурации промежуточного сервера. Но мне нравится понимать то, как они работают и как работать с ними. Надеюсь, это руководство оказалось полезным для вас. Всего наилучшего!
Дайте знать, что вы думаете по данной теме статьи в комментариях. За комментарии, дизлайки, подписки, лайки, отклики огромное вам спасибо!
Настройка PHP: Как работает php.ini
PHP имеет ряд настраиваемых параметров. Он также имеет расширения или « плагины », которые имеют отдельные параметры. Большинство из них содержится в « конфигурационных файлах » с расширениями .ini . Википедия сообщает нам, что префикс был получен от сокращенной версии “initialization” . В любом случае эта конвенция распространяется и на PHP .
Подобные файлы очень похожи. Они включают в себя ряд значений, установленных в строках. Например:
Что отличает хороший INI-файл от плохого, так это то, насколько полезны и понятны комментарии. В этом отношении php.ini отличается в лучшую сторону. В нем содержится множество комментариев, которые помогут разобраться, прежде чем устанавливать значения:
Все, что размещено в php.ini после точки с запятой ( ; ), не обрабатывается, а рассматривается как комментарий. Объявления, похожие на строку memory_limit , закомментированы. Если значение не указано, удалено или закомментировано, то PHP использует значение по умолчанию.
Создание папки или структуры папок
Создать папку можно с помощью функции mkdir() (make directory):
Вторым параметром указываются права доступа к файлу в виде восьмеричного числа, по-умолчанию это 0777 , что означает самые широкие права. Для Windows этот аргумент игнорируется.
Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :
Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :
Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:
Права доступа - это отдельная объёмная тема, поэтому сейчас мы её пока рассматривать не будем.
Чтение и запись файлов
Для простого отображения всего содержимого файла идеально подходит функция readfile () . Ее синтаксис:
readfile (string filename) , где string filename – строковое имя фала ( не дескриптор ).
Тот же самый файл можно прочитать с помощью функции fpassthru () . Она считывает данные от конечной позиции указателя и до конца файла. Ее синтаксис:
Для работы с функцией требуется открытие и закрытие файла. Пример:
Результат аналогичен предыдущему.
Функции для работы с файлами в php позволяют считывать содержимое построчно и посимвольно:
- string fgets ( int file, int length) – функция считывает строку длиною length . Пример:
- string fread (int file, int length) – по действию идентична предыдущей.
Для записи текстовых данных в файл существует две идентичные функции:
- int fputs ( int file, string string [, int length ])
- int fwrite ( int file, string string [, int length ])
Функции записывают в файл int file строку string string указанной длины int length ( необязательный аргумент ). Пример:
Замена текста собственной функцией (preg_replace_callback)
Самое вкусное. Допустим, мы хотим использовать на сайте что-то вроде BBCode, т.е. собственные теги, которые потом должны заменяться на обычный HTML код:
Заменить тег на обычный HTML тег можно так:
Функция preg_replace_callback передаёт каждую найденную строку в нашу безымянную функцию, затем заменяет найденный текст на то, что наша функция возвращает.
Не знаком с безымянными функциями? Тогда можно сделать так:
Вторым параметром передаём название нашей функции. Код отработает точно также, как и предыдущий.
Работа с файлами с помощью fopen()
Функций file() , file_get_contents() и file_put_contents() достаточно для решения большинства задач, связанных с управлением файлами.
Но иногда возникают ситуации, когда нам необходимы более продвинутые инструменты. Например, если у нас есть большой текстовый файл и мы хотим читать его построчно, а не весь сразу, для экономии оперативной памяти.
Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :
Функция fopen() возвращает так называемый лескриптор. Это ссылка, указатель на файл, его мы будем передавать в другие функции. Кстати, тип данных этого дескриптора - resource .
Первым параметром мы передаём путь к файлу, вторым - модификатор доступа к файлу. Ниже перечислены наиболее популярные модификаторы:
- r - открытие для чтения, указатель переходит в начало файла.
- r+ - открытие для чтения и записи, указатель переходит в начало файла.
- w - открытие для записи, указатель переходит в начало файла. Если файла нет - создаётся, если есть - очищается от данных.
- w+ - открытие для чтения и записи, в остальном аналогичен w .
- a - открытие для записи, указатель переходит в конец файла. Если файла нет - создаётся.
- a+ - открытие для чтения и записи, в остальном аналогичен a .
- x - создание и открытие для записи, указатель переходит в начало файла. Если файл существует - PHP покажет ошибку.
- x+ - создание и открытие для чтения и записи, в остальном аналогичен x .
Указатель - это нечто вроде курсора. Вы можете переместить его в любое место файла, чтобы добавить или отредактировать определённые данные.
Для записи данных в файл существует функция fwrite() . Давайте попробуем создать файл и записать в него какие-нибудь данные:
Заметьте, из-за модификатора w при каждом запуске скрипта данные в файле стираются и добавляются заново. Если модификатор заменить на a , данные будут не перезаписываться, а добавляться в конец файла.
Для построчного чтения файла используется функция fgets() :
При каждом запуске fgets получает следующую строку и возвращает её в $line . Вторым параметром передаётся максимальная длина строки. Это означает, что если строка слишком длинная, она будет обрезана.
Также в PHP существует множество других полезных функций, работающих с дескриптором файла. Почитать о них можно в документации.
Еще есть слова для замены слова "паштет" который находиться в 33.txt
Варенье.
Мед.
Торт.
Открыть файл 1.php заменить паштет на слово из txt это Варенье сохранить закрыть.
Открыть файл 10.php заменить паштет на слово из txt это Мед сохранить закрыть.
Открыть файл 30.php заменить паштет на слово из txt это Торт сохранить закрыть.
И файлов может быть под сотни в которых нужно заменить слово.
Как желательно через bat одним кликом заменить все файлы.Или notepad++.
- Вопрос задан более трёх лет назад
- 831 просмотр
Простой 4 комментария
Азат Киберов, не свовсем, но близко. Я новичок в верстке и программировании и как раз в силу непонимания у меня есть разные навиные фантазии относительного того, что можно (или нельзя) делать с содержимым файлов.
В общих чертах, грубо упрощая, я хочу что-то вроде плагина, который бы каждый файл вне зависимости от расширения открывал бы как текст, и по шаблону бы дела там замены и перестановки, а птом сохранял в своемизначальном формате.
И чтобы работать можно было удобно через файл подключеный к другому файлу. Иными словами, чтобы через один файл я мог бы управлять другими файлом обращаясь к нему как к простому тексту - меняя ипереставля строки, и в идеале даже, чтобы я мог через этот файл селективно отслеживать действия с с отельными выбранными строками, все измения которых тут же прописывались у в подключенном файле вотчере.
К примеру - я пишу строчку разметки -- и тут же у меня эта строка в виде преобразованного минимодуля, которым я могу управлять дистанционно, отображается в файле-вотчере, который я на лету могу зарегестрировать и дистанционно менять парметры, отслеживая вме изенения сэтой строкой, и из любого метса это файла-вотчера я могу обратиться к этой строке, даже если она изменилась или изменила свое местоположение.
Но так как я не зная,к возможо ли это, то пытаюсь подступиться издалека и с разных сторон.
Напишите на том же php скрипт замены или воспользуйтесь утилитой sed.
sed линуксовая утилита, но ее виндовая версия есть в составе msys2, git bash, cygwin и т.п. пакетах.
Вызовы sed можно завернуть в батник.
Непосредственно использовать bat сценарий для прямой замены скорее всего не выйдет, т.к. в php файлах обычно присутствуют символы, которые являются специальными для bat (такие как: <>&| . ), из-за них bat сценарий будет завершаться ошибкой и работу не сделает.
Но вызовы sed в батник завернуть можно, т.к. непосредственно замену будет совершать sed, а не батник.
я не понял где catch ///// ?
$plan.keys | foreach-object $datafile = $_
$text = get-content -path (resolve-path $datafile)
$new_text = $text -replace $plan[$datafile]['old'], $plan[$datafile]['new']
write-output $new_text | out-file -filepath (resolve-path $datafile)
$new_text = get-content -path (resolve-path $datafile)
write-output ('в попало ' -f $datafile, $new_text)
>
На самом деле, чем открыть php файл, не является большой проблемой. Бывает труднее открыть бутылку пива, когда находишься посреди леса. Но так думают лишь заядлые программисты. А для новичков поведаем обо всех возможностях php для работы с файлами:
Получение информации о файле
Для получения информации о файлах в php используется целый ряд функций:
- bool fileexists (string filename) – проверяет, существует ли элемент;
- int fileatime (string filename) – возвращает время последнего открытия;
- int filesize (string filename) – возвращает байтовый размер файла;
- string filetype (string filename) – тип файла.
Это еще не все возможности для работы с файлами, реализованные в php . Многие из методов и функций остались за кадром. Так что простор для самостоятельного познания еще велик.
Есть еще один замечательный инструмент, который должен быть у вас под рукой - это функция php info() . Например, чтобы найти файл php.ini , который нужно изменить.
Простая замена текста или тегов (preg_replace)
Заменить текст без замены тегов можно следующим образом:
$1 и $2 содержат открывающий и закрывающий теги соответственно, поскольку мы поместили их в скобки.
А в следующем примере меняются только теги, сам текст остаётся нетронутым:
Проверка существования файла или папки
Проверить существование папки или файла можно с помощью функции file_exists() :
Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :
Создание файла и запись в файл: file_put_contents()
Функция file_put_contents() позволяет создать файл и заполнить его данными.
Первым параметром функция принимает путь к файлу, вторым - строку с данными. Для создания пустого файла нужно передать вторым параметром пустую строку.
Если файла не существует - он будет создан. Если существует - данные в файле будут перезаписаны.
Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :
Также вторым параметром можно передать массив:
Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:
Читайте также: