Меню создать файл php

Работа с файлами в PHP

С помощью функции file_get_contents() можно получить содержимое файла:

Также мы можем получить html-код какой-либо страницы в интернете:

'; echo file_get_contents('https://ya.ru'); echo '';

Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.

Чтение файла: file()

Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.

Создадим в корне сайта файл data.txt со следующим содержимым:

Теперь запустим скрипт index.php со следующим кодом:

При запуске этого скрипта мы получим в браузере:

array(3) < [0]=>string(7) "Vasya " [1]=> string(7) "Petya " [2]=> string(5) "Gosha" >

Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.

Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :

Теперь у всех строк будет по 5 символов.

Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :

Разумеется, мы можем передать сразу две константы:

Создание файла и запись в файл: file_put_contents()

Функция file_put_contents() позволяет создать файл и заполнить его данными.

Первым параметром функция принимает путь к файлу, вторым — строку с данными. Для создания пустого файла нужно передать вторым параметром пустую строку.

Если файла не существует — он будет создан. Если существует — данные в файле будут перезаписаны.

Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :

Также вторым параметром можно передать массив:

Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:

Создание папки или структуры папок

Создать папку можно с помощью функции mkdir() (make directory):

Вторым параметром указываются права доступа к файлу в виде восьмеричного числа, по-умолчанию это 0777 , что означает самые широкие права. Для Windows этот аргумент игнорируется.

Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :

Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :

Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:

Права доступа — это отдельная объёмная тема, поэтому сейчас мы её пока рассматривать не будем.

Проверка существования файла или папки

Проверить существование папки или файла можно с помощью функции file_exists() :

Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :

Проверка прав доступа

Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:

Копирование, перенос и удаление файла

Для удаления файлов используется функция unlink() :

Чтобы скопировать файл, используем функцию copy() :

Для переименования и переноса файла в другую папку используется функция rename() :

Работа с файлами с помощью 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 существует множество других полезных функций, работающих с дескриптором файла. Почитать о них можно в документации.

Источник

Создание и вывод меню

Сначала надо создать тип меню. Это можно сделать в НастройкиНастройки продуктаНастройки модулейУправление структурой в параметре Типы меню .

Создание типа меню

Теперь можно создать файл . custom . menu.php , внутри которого будут указаны пункты меню.

Файл меню создаётся в той директории, в которой надо выводить меню. Если меню надо показывать на всех страницах, то файл создаётся в корневой директории сайта.

Например, посетитель находится в разделе /ru/company/about/. Для показа меню типа «custom», файл меню будет искаться в следующей последовательности:

Если в одном из каталогов будет найдено меню, то поиск останавливается и в последующих каталогах уже не ищется.

Вывести меню можно через следующий код:

$APPLICATION->IncludeComponent("bitrix:menu", "horizontal_multilevel", // шаблон меню array( "ROOT_MENU_TYPE" => "custom", // имя меню "MENU_CACHE_TYPE" => "A", // Тип кэширования "MENU_CACHE_TIME" => "3600", // Время кэширования (сек.) "CACHE_SELECTED_ITEMS" => "N", // не кэшировать меню для каждой страницы ) );

Стоит обратить внимание на параметр CACHE_SELECTED_ITEMS , который включает кэширование меню на каждой странице, из-за чего размер кэша может достигать больших размеров. Рекомендуется отключать данный параметр, как указано на примере выше. При этом подсветка активных пунктов меню останется.

Добавляются пункты меню через следующий код:

# .custom.menu.php $aMenuLinks = Array( Array( "Пункт меню 1", "link_1/", Array(), Array(), '' ), Array( "Пункт меню 2", "link_2/", Array(), Array(), '' ), );

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

Меню

После чего откроется модальное окно редактирования меню.

Источник

Как создать файл (PHP)

Создать файл в PHP можно двумя способами. Функцией fopen() и функцией file_put_contents() . Функция file_put_contents() лучше использовать только в случае обычной записи/дозаписи текста в файл, в остальных случаях лучше использовать fopen() .

fopen()

Например нужно создать файл data.txt и записать в него текстовую информацию.

В результате в файле data.txt будет следующая информация:

file_put_contents()

Функция int file_put_contents (string filename, mixed data [, int flags [, resource context]]) повторяет вызов функций fopen(), fwrite(), fclose().

Например нужно создать файл data2.txt и записать в него текстовую информацию.

В результате в файле data2.txt будет:

Если вы хотите этой функцией file_put_contents() записать информацию в уже существующий файл, при это сохранив информацию в нем, то в качестве третьего параметра нужно передать константу FILE_APPEND .

В результате в файле будет следующая информация:

Примечание

При создании файла убедитесь, что у папки, где будет создаваться файл, выставлены права доступа для создания файлов.

Категории

Читайте также

  • Как очистить файл не удаляя его (PHP)
  • Как скопировать файл (PHP)
  • Как очистить папку (PHP)
  • Как дописать в конец файла (PHP)
  • Как проверить права доступа (PHP)
  • Дата изменения файла (PHP)
  • Список файлов в папке (PHP)
  • Массив в JSON (PHP)
  • Скачать файл с сервера (PHP)
  • Как на PHP скачать файл
  • Как записать массив в файл (PHP)
  • Как создать папку (Perl)

Комментарии

Вход на сайт

Введите данные указанные при регистрации:

Социальные сети

Вы можете быстро войти через социальные сети:

Источник

Как сделать меню для сайта на PHP

Эта статья является полезным дополнением статьи как сделать сайт на PHP, поскольку она раскрывает содержание модуля menu.php . Ниже будет представлена собственная разработка меню на PHP, которая была написана с нуля в блокноте.

Как сделать меню для сайта на PHP

Этот код особенно будет полезен для динамичных сайтов, которые имеют самописные движки. Я предложу два варианта кода, которые имеют незначительные отличия (в чем различие будет пояснено после).

Для начала приведу примерную структуру сайта, для которого подойдет это меню. Структура сайта должна иметь следующий вид (классический вид):

/index.html /razdel_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html . /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html . . . /razdel_N/articles_2.html

Сайт может содержать у разделов еще и подразделы:

/razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html . /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html

Такая структура также будет работать для нашего меню лишь с небольшими отличиями.

Я предлагаю создать отдельный файл для меню на php. Например, menu.php было бы отличным названием для такого файлика. Для реализации меню также представлен стиль меню в CSS, чтобы сразу сделать его более менее красивым. Естественно этот стиль дается только для ознакомления, поскольку дизайны у сайтов очень разные.

Код для стиля меню в CSS:

.menu < height:42px; padding:0 0 0 16px; background:url(images/spacer.png) repeat; >.menu li < display:block; float:left; >.menu li.active < background: #000011; >.menu a < color:#FFF; display:block; line-height:42px; text-decoration:none; padding:0 14px; >.menu a:hover < background:url(images/spacer.png) repeat; >

Теперь, давайте рассмотрим первый вариант реализации меню на PHP, который является немного упрощенным.

Первый вариант кода меню на PHP

Меню можно разделить на две части. Первая содержит информационный массив $array_menu , в который заносятся названия наших разделов с ссылками на разделы. Есть вариант забить эти данные в базу данных mySQL, но особо смысла в этом нет, поскольку выборка совсем небольшая, поэтому на скорость работы это никак не повлияет.

Порядок следования в массиве будет сохранятся и при выводе меню на сайте. То есть массив надо заполнять в порядке, в котором нужно выводить меню.

Примечание:
В случае, если URL (адреса) заголовком разделов имеют вид:
/razdel_1
или такой
/razdel_1/nazvanie_razdela.html
то в array_menu нужно записывать точное совпадение:
$array_menu[$i][‘url’]=’/razdel_1′
или для второго случая:
$array_menu[$i][‘url’]=’/razdel_1/nazvanie_razdela.html’ ;

Как работает первый вариант меню?
Он подсвечивает меню только, если Вы находитесь по адресу заголовка раздела. Например, если адрес страницы будет /razdel_1/articles_1.html , то меню никак не будет подсвечиваться.

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

Второй вариант кода меню на PHP

Комментарии к коду:
Первая часть кода осталась без изменений и предусматривает только задание массива с адресами и названиями разделов. Сильные изменения коснулись второй части меню. Во-первых появилась функция str_count($str) , которая подсчитывает количество вхождений слэшов «/». Это нужно для того, чтобы правильно идентифицировать главную страницу сайта.

Вторая функция func_uri($str) оставляет только ту часть URL, которая есть до первого вхождения слэша «/». Например, если адрес страницы /razdel_1/articles_1.html , то функция func_uri(/razdel_1/articles_1.html) обрежет articles_1.html и вернет только URL раздела: /razdel_1/ .

Этот код легко можно модифицировать и дальше. Например, если у разделов есть подразделы, которые желательно как-то выделять.

Источник

Читайте также:  Javascript html to pdf with css
Оцените статью