Php file explode function

Содержание
  1. explode
  2. Список параметров
  3. Возвращаемые значения
  4. Список изменений
  5. Примеры
  6. Примечания
  7. Смотрите также
  8. explode
  9. Список параметров
  10. Возвращаемые значения
  11. Список изменений
  12. Примеры
  13. Примечания
  14. Смотрите также
  15. User Contributed Notes 3 notes
  16. Хранение и чтение массивов данных с помощью php-функции explode() в текстовых файлах
  17. Один из вариантов хранения данных пользователей в текстовом файле
  18. PHP-код, проверяющий наличие пользователя в текстовом файле
  19. Задание именованной константы с именем файла с паролями пользователей
  20. Чтение данных, получаемых из HTML-формы
  21. HTML-форма для передачи имени пользователя
  22. Вызов функции, обрабатывающей полученные из формы данные
  23. Функция, анализирующая полученные данные из HTML-формы и сравнивающая их с данными, хранящимися с текстовом файле
  24. Открываем на чтение файл с паролями пользователей
  25. Блокировка файла на время выполнения программы
  26. Чтение файла в массив $lines
  27. Построчный обход массива
  28. PHP-функция explode()
  29. Есть ли такой пользователь в файле, хранящимся на сервере?
  30. Резюме

explode

Возвращает массив строк, полученных разбиением строки string с использованием delimiter в качестве разделителя.

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

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

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

Если limit равен нулю, то он расценивается как 1.

Замечание:

По историческим причинам, функции implode() можно передавать аргументы в любом порядке, но для explode() это недопустимо. Убедитесь в том, что delimiter указан перед аргументом string .

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

Возвращает массив ( array ) строк ( string ), созданный делением параметра string по границам, указанным параметром delimiter .

Если delimiter является пустой строкой («»), explode() возвращает FALSE . Если delimiter не содержится в string , и используется отрицательный limit , то будет возвращен пустой массив ( array ), иначе будет возвращен массив, содержащий string .

Список изменений

Версия Описание
5.1.0 Добавлена поддержка отрицательных значений limit

Примеры

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

// Пример 1
$pizza = «кусок1 кусок2 кусок3 кусок4 кусок5 кусок6» ;
$pieces = explode ( » » , $pizza );
echo $pieces [ 0 ]; // кусок1
echo $pieces [ 1 ]; // кусок2

// Пример 2
$data = «foo:*:1023:1000::/home/foo:/bin/sh» ;
list( $user , $pass , $uid , $gid , $gecos , $home , $shell ) = explode ( «:» , $data );
echo $user ; // foo
echo $pass ; // *

Пример #2 Пример возвращаемого значения explode()

/*
Строка, которая не содержит разделителя, будет
просто возвращать массив с одним значением оригинальной строки.
*/
$input1 = «hello» ;
$input2 = «hello,there» ;
var_dump ( explode ( ‘,’ , $input1 ) );
var_dump ( explode ( ‘,’ , $input2 ) );

Результат выполнения данного примера:

array(1) ( [0] => string(5) "hello" ) array(2) ( [0] => string(5) "hello" [1] => string(5) "there" )

Пример #3 Примеры с использованием параметра limit

// положительный лимит
print_r ( explode ( ‘|’ , $str , 2 ));

// отрицательный лимит (начиная с PHP 5.1)
print_r ( explode ( ‘|’ , $str , — 1 ));
?>

Результат выполнения данного примера:

Array ( [0] => один [1] => два|три|четыре ) Array ( [0] => один [1] => два [2] => три )

Примечания

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

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

  • preg_split() — Разбивает строку по регулярному выражению
  • str_split() — Преобразует строку в массив
  • mb_split() — Разделение строк в многобайтных кодировках, используя регулярное выражение
  • str_word_count() — Возвращает информацию о словах, входящих в строку
  • strtok() — Разбивает строку на токены
  • implode() — Объединяет элементы массива в строку
Читайте также:  Python discord bot connect to voice channel

Источник

explode

Возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя.

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

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

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

Если limit равен нулю, то он расценивается как 1.

Замечание:

До PHP 8.0 функция implode() принимала параметры в любом порядке. Функция explode() никогда этого не поддерживала: убедитесь в том, что separator указан перед аргументом string .

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

Возвращает массив ( array ) строк ( string ), созданный делением параметра string по границам, указанным параметром separator .

Если separator является пустой строкой («»), explode() выбрасывает ValueError . Если separator не содержится в string , и используется отрицательный limit , то будет возвращён пустой массив ( array ), иначе будет возвращён массив, содержащий string . Если значения separator появляются в начале или в конце string , указанные значения будут добавлены как пустое значение массива ( array ), либо в первой, либо в последней позиции возвращённого массива ( array ) соответственно.

Список изменений

Версия Описание
8.0.0 explode() теперь выбрасывает TypeError , если параметр separator является пустой строкой ( «» ). Ранее вместо исключения explode() возвращала false .

Примеры

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

// Пример 1
$pizza = «кусок1 кусок2 кусок3 кусок4 кусок5 кусок6» ;
$pieces = explode ( » » , $pizza );
echo $pieces [ 0 ]; // кусок1
echo $pieces [ 1 ]; // кусок2

// Пример 2
$data = «foo:*:1023:1000::/home/foo:/bin/sh» ;
list( $user , $pass , $uid , $gid , $gecos , $home , $shell ) = explode ( «:» , $data );
echo $user ; // foo
echo $pass ; // *

Пример #2 Пример возвращаемого значения explode()

/*
Строка, которая не содержит разделителя, будет
просто возвращать массив с одним значением оригинальной строки.
*/
$input1 = «hello» ;
$input2 = «hello,there» ;
$input3 = ‘,’ ;
var_dump ( explode ( ‘,’ , $input1 ) );
var_dump ( explode ( ‘,’ , $input2 ) );
var_dump ( explode ( ‘,’ , $input3 ) );

Результат выполнения данного примера:

array(1) ( [0] => string(5) "hello" ) array(2) ( [0] => string(5) "hello" [1] => string(5) "there" ) array(2) ( [0] => string(0) "" [1] => string(0) "" )

Пример #3 Примеры с использованием параметра limit

// положительный лимит
print_r ( explode ( ‘|’ , $str , 2 ));

// отрицательный лимит
print_r ( explode ( ‘|’ , $str , — 1 ));
?>

Результат выполнения данного примера:

Array ( [0] => один [1] => два|три|четыре ) Array ( [0] => один [1] => два [2] => три )

Примечания

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

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

  • preg_split() — Разбивает строку по регулярному выражению
  • str_split() — Преобразует строку в массив
  • mb_split() — Разделение строк в многобайтных кодировках, используя регулярное выражение
  • str_word_count() — Возвращает информацию о словах, входящих в строку
  • strtok() — Разбивает строку на токены
  • implode() — Объединяет элементы массива в строку

User Contributed Notes 3 notes

Note that an empty input string will still result in one element in the output array. This is something to remember when you are processing unknown input.

For example, maybe you are splitting part of a URI by forward slashes (like «articles/42/show» => [«articles», «42», «show»]). And maybe you expect that an empty URI will result in an empty array («» => []). Instead, it will contain one element, with an empty string:

Читайте также:  Исполнение php на странице wordpress

$uri = » ;
$parts = explode ( ‘/’ , $uri );
var_dump ( $parts );

Be careful, while most non-alphanumeric data types as input strings return an array with an empty string when used with a valid separator, true returns an array with the string «1»!

var_dump(explode(‘,’, null)); //array(1) < [0]=>string(0) «» >
var_dump(explode(‘,’, false)); //array(1) < [0]=>string(0) «» >

var_dump(explode(‘,’, true)); //array(1) < [0]=>string(1) «1» >

If you want to directly take a specific value without having to store it in another variable, you can implement the following:

echo $status_only = explode(‘-‘, $status)[0];

Источник

Хранение и чтение массивов данных с помощью php-функции explode() в текстовых файлах

Для того, чтобы хранить данные и работать с ними можно использовать базы данных. Однако это не всегда оправдано. Также иногда требуется в одно поле базы данных записать несколько значений, например, массив. Для того, чтобы работать с такими данными в php можно использовать функцию explode() , которая позволяет разбивать строку с помощью разделителя, помещая результат в массив. Обрабатывать данные из оперативной памяти, находящимся в массиве не только проще, но и быстрее.

Один из вариантов хранения данных пользователей в текстовом файле

Для примера рассмотрим вариант хранения данных пользователей (логина и пароля) в текстовом файле. Пусть каждая строчка в таком файле будет отвечать за одного пользователя. В строке будут храниться логин пользователя и его пароль. Для того, чтобы отделить их, в качестве разделителя будем использовать знак табуляции. На клавиатуре этот символ находится в левом крайнем ряду и имеет название Tab . В текстом виде этот знак хранится в виде кода данного символа, который соответствует записи \t .

Подготовим такой файл с записями о логине и пароле нескольких пользователей и назовём его users.txt :

user1 pass1 user2 pass2 user3 pass3 user4 pass4 

PHP-код, проверяющий наличие пользователя в текстовом файле

Сразу приведу готовое работающее решение на языке php, ниже разберём, как работает данный код:

 else < $user_form = ''; >?>  

"); if (flock($reg_form, LOCK_EX)) < $lines = explode ("\n", fread ($reg_form, filesize(UsersFile))); foreach ($lines as $line) < $userdata = explode ( "\t", $line); if ( filter_var($userdata[0], FILTER_SANITIZE_EMAIL) == $user ) < $freename = 'Пользователь ' . $userdata[0] . ' найден. Его пароль ' . $userdata[1] . '

'; break; > else < $freename = 'Пользователь ' . $user . ' не найден.

'; > > > else < echo "Ошибка: Файл пользователей не может быть заблокирован на время работы программы
"; > fclose($reg_form); return $freename; > ?>

Задание именованной константы с именем файла с паролями пользователей

Для того, чтобы не вводить каждый раз (и не запоминать) название файла с паролями пользователей, определим его в именованную константу UsersFile с помощью функции define() :

Чтение данных, получаемых из HTML-формы

Далее прочтём данные, полученные из HTML-формы, а конкретно, имя пользователя. Если оно задано, поместим его в переменную $user_form , если нет, обнулим эту переменную (мало ли, что в ней может содержаться):

HTML-форма для передачи имени пользователя

На этом блок подготовки данных можно считать полным. После него идёт вывод простейшей HTML-формы, передающей из браузера методом POST имя пользователя в поле с именем user скрипту, вызвавшему эту форму (то есть самому себе — атрибут тега form пустой action=»» ):

Читайте также:  Android java content provider

Вызов функции, обрабатывающей полученные из формы данные

Ну и вызовем функцию detect_field () , которая следует ниже с помощью печати её результатов работы, передав ей значение, полученной ранее переменной $user_form :

print detect_field ($user_form);

Функция, анализирующая полученные данные из HTML-формы и сравнивающая их с данными, хранящимися с текстовом файле

Ниже собственно сама функция function detect_field ($user) , которая анализирует полученные данные из HTML-формы и сравнивающая их с данными, хранящимися с текстовом файле на сервере. Тело функции (то, что она делает), размещено между фигурными скобками < и >. Рассмотрим то, что же делает эта функция.

Открываем на чтение файл с паролями пользователей

С помощью функции fopen() с параметрами rt (читать r текстовые данные t ) из файла, имя которого прописано в именованной константе UsersFile :

$reg_form = fopen(UsersFile, «rt») or die («Ошибка: Не могу открыть файл пользователей
«);

Блокировка файла на время выполнения программы

Если файл удалось открыть, заблокируем его на время выполнения программы с помощью функции flock() :

Чтение файла в массив $lines

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

$lines = explode ("\n", fread ($reg_form, filesize(UsersFile)));

Работа функции PHP fread() кратко описана в → этой статье. Функцию explode() рассмотрим ниже, когда будем разбивать строку на элементы.

Построчный обход массива

Теперь у нас есть массив $lines , каждый элемент которого содержит строчку из файла с паролями пользователей. Обойдём каждый элемент этого массива строку за строкой с помощью оператора цикла foreach() :

PHP-функция explode()

Вот и добрались до функции explode() . Общий вид этой функции php:

explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] ) : array

PHP-функция explode() возвращает массив строк, полученных разбиением строки string с использованием delimiter в качестве разделителя.

Для наших целей в качестве разделителя служит символ табуляции \t , а данные уже находятся в переменной $line . (Напомню, мы находимся в цикле foreach ). поэтому, всё, что нужно сделать, — это поместить пару логин/пароль в собственный массив $userdata:

$userdata = explode ( "\t", $line);

Есть ли такой пользователь в файле, хранящимся на сервере?

Ну а дальше, собственно логическая часть программы. Текущее значение имени пользователя сейчас находится в первом элементе массива с индексом 0 — $userdata[0] . Его и сравниваем с переданным из HTML-формы в функцию значением $user , применив фильтр очистки FILTER_SANITIZE_EMAIL . (Это я на будущее, так как у меня именем пользователя будет его email. О том, как работают встроенные в php фильтры описано в → этой статье.

if ( filter_var($userdata[0], FILTER_SANITIZE_EMAIL) == $user )

Ну и в зависимости от того, есть ли совпадение или нет, значение переменной $freename будет содержать ответ на этот вопрос.

После того, как было найдено первое совпадение (выход по break ) или закончится файл с данными пользователей, закроем наш файл (это снимет с него блокировку):

И передадим переменную $freename с результатом в виде значения функции

Именно это значение и будет напечатано под формой ввода логина пользователя.

Резюме

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉

Источник

Оцените статью