Php разбиение строки. Разбиение строк. Как использовать функцию PHP explode

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

Решение
Если в качестве разделителя частей строк выступает строковая константа, то следует применять функцию explode():

$words = explode(" ","My sentence is not very complicated");

Функция split() или функция preg_split() применяются, если при описании разделителя требуется регулярное выражение POSIX или Perl:

$words = split(" +","This sentence has some extra whitespace in it.");
$words = preg_split("/\d\. /","my day: 1. get up 2. get dressed 3. eat toast");
$lines = preg_split("/[\n\r]+/",$_REQUEST["textarea"]);

В случае чувствительного к регистру разделителя применяется функция spliti() или флаг /i в функции preg_split():

$words = spliti(" x ","31 inches x 22 inches X 9 inches");
$words = preg_split("/ x /i","31 inches x 22 inches X 9 inches");

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

$dwarves = "dopey,sleepy,happy,grumpy,sneezy,bashful,doc";
$dwarf_array = explode(",",$dwarves);

Теперь переменная $dwarf_array – это массив из семи элементов:

Print_r($dwarf_array);
Array
=> dopey
=> sleepy
=> happy
=> grumpy
=> sneezy
=> bashful
=> doc
)

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

$dwarf_array = explode(",",$dwarves,5);
print_r($dwarf_array);
Array
=> dopey
=> sleepy
=> happy
=> grumpy
=> sneezy,bashful,doc
)

Функция explode() трактует разделитель строки буквально.

Если разделитель строки определяется как запятая с пробелом, то данная функция делит строку по пробелу, следующему за запятой, а не по запятой или пробелу. Функция split() предоставляет большую гибкость. Вместо строкового литерала в качестве разделителя она использует регулярное выражение POSIX:

$more_dwarves = "cheeky,fatso, wonder boy, chunky,growly, groggy, winky";
$more_dwarf_array = split(", ?",$more_dwarves);

Это регулярное выражение разделяет строку по запятой, за которой следует необязательный пробел, что позволяет правильно определить всех новых гномов. Таким образом, пробелы в их именах не разделяют их на части, но каждое имя выделяется независимо от того, отделяется ли оно с помощью запятой «,» или с помощью запятой с пробелом «, »:

Print_r($more_dwarf_array);
Array
=> cheeky
=> fatso
=> wonder boy
=> chunky
=> growly
=> groggy
=> winky
)

Существует функция preg_split(), которая подобно функции split() использует Perl-совместимые регулярные выражения вместо регулярных выражений POSIX.

Функция preg_split() предоставляет преимущества различных расширений регулярных выражений в Perl, а также хитрые приемы, такие как включение текста-разделителя в возвращаемый массив строк:

$math = "3 + 2 / 7 - 9";
$stack = preg_split("/ *([+\-\/*]) */",$math,-1,PREG_SPLIT_DELIM_CAPTURE);
print_r($stack);
Array
=> 3
=> +
=> 2
=> /
=> 7
=> -
=> 9
)

Разделитель-регулярное выражение ищет математические операторы (+, -, /, *), окруженные необязательными начальными или завершающими пробелами. Флаг PREG_SPLIT_DELIM_CAPTURE приказывает функции preg_split() включить совпадения как часть разделителя-регулярного выражения, заключенного в кавычки, в возвращаемый строковый массив. В кавычках только символы математических операций, поэтому возвращенный массив не содержит пробелов..

Предположим, что у вас есть фраза «Hello, World!» и из нее вам необходимо получить вторую часть, то есть «World!». Конечно, эту задачу можно решить несколькими способами, но разбивка строки и получение из нее нужной части также является вариантом решения.

И как это можно сделать, я сейчас расскажу.

Как разбить строку на массив на PHP?

В PHP разбиение строки на массив осуществляется с помощью функции «explode » – ею, собственно, мы и воспользуемся.

Реализация:

Что здесь что?

На самом деле, вся «соль» здесь находится в третьей строке. Здесь мы указываем ориентир, по которому нужно разбить строку (в нашем случае – это запятая), и уже далее просто получаем нужный нам кусок строки, а поскольку нумерация в PHP начинается с нуля (а нулевая часть это «Hello»), то мы с вами указываем «$content_new["1"] » – второй элемент.

Как разбить строку на массив на JavaScript?

На JavaScript эти же задачи решаются с помощью метода «split »:

var content = "Hello, World!"; var content_new = content_new.split(","); alert(content_new);

Обратите внимание , что ориентир (то есть то, как нам нужно разбивать строку) вы задаете сами. В нашем случае это была запятая, в вашем же – это может быть число или, например, даже слово.

(PHP 4 >= 4.0.1, PHP 5)

spliti — Split string into array by regular expression case insensitive

Description

spliti (string $pattern , string $string [, int $limit = -1 ]) : array

Splits a string into array by regular expression.

This function is identical to split() except that this ignores case distinction when matching alphabetic characters.

Parameters

Case insensitive regular expression.

If you want to split on any of the characters which are considered special by regular expressions, you"ll need to escape them first. If you think spliti() (or any other regex function, for that matter) is doing something weird, please read the file regex.7 , included in the regex/ subdirectory of the PHP distribution. It"s in manpage format, so you"ll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.

The input string.

If limit is set, the returned array will contain a maximum of limit elements with the last element containing the whole rest of string .

Return Values

Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the case insensitive regular expression pattern .

If there are n occurrences of pattern , the returned array will contain n +1 items. For example, if there is no occurrence of pattern , an array with only one element will be returned. Of course, this is also true if string is empty. If an error occurs, spliti() returns FALSE .

Examples

This example splits a string using "a" as the separator:

Example #1 spliti() example

2.8K

Метод PHP explode используется для разбиения строки на заданное число подстрок.

Синтаксис метода

Пример использования PHP метода explode :

$array_name = explode ($delimiter, $string_to_split, $no_of_breaks)

Пример использования explode для разбиения номера телефона

В этом примере мы объявили строковую переменную и присвоили ей номер телефона следующего формата:

001-234-567678

После этого применили метод explode для разбиения строки с помощью дефиса (тире ) в качестве разделителя. Возвращенный массив строк присвоили массиву.

Затем использовали цикл fогеасh для отображения значений элементов массива, которые являются подстроками номера телефона. Поскольку параметр limit не указан, весь номер телефона будет разбит на три подстроки:


Посмотреть демо и код Пример с пробелом в качестве разделителя

В этом примере PHP explode переноса строки использован пробел в качестве разделителя. Для примера возьмем это строку:

В примере снова не используется параметр limit . После создания строки мы применили метод explode для ее разбиения. Затем использовали цикл fогеасh для отображения возвращаемых элементов массива.

Наконец, применили функцию count() для вывода количества подстрок в массиве:


Посмотреть демо и код Пример с параметром limit

Это пример, описанный выше, за исключением того, что здесь мы использовали параметр limit для указания количества разбиений в строке. Ниже показана строка, которая была использована:

This is explode tutorial that enables string split in PHP.

В PHP explode примере, когда мы использовали пробел в качестве разделителя, было возвращено всего 10 подстрок. На этот раз с помощью параметра limit было определено 5 разбиений:


Посмотреть демо и код

На демонстрационной странице отображаются только пять подстрок, при этом последняя включает всю оставшуюся часть строки. Общее количество элементов массива также 5 , а не 10 , как в приведенном выше примере.

Для чего нужен метод explode

Метод explode (PHP split ) используется для разбиения заданной строки. Допустим, что веб-форма принимает телефонный номер с кодом страны и области в следующем формате:

001-234-567678

Нам нужно отделить код страны и области, которые разделены дефисом. Для разбиения телефонного номера можно воспользоваться explode с разделителем дефисом (тире ) после принятия номера в качестве входного параметра.

Поскольку explode возвращает массив подстрок, метод explode разобьет номер в следующий массив элементов:

  • Первый элемент = 001
  • Второй элемент = 234
  • Третий элемент = 567678
Как использовать функцию PHP explode

В функции PHP explode можно указать три параметра. Последний из них — необязательный, так как указывать количество разбиений (максимальное количество подстрок ) необязательно.

Описание каждого параметра:

$array_name = explode ($delimiter, $string_to_split, $no_of_breaks)

  • $ Array_name — массив; поскольку метод explode возвращает массив строк, полученный разбиением строки;
  • $delimiter — определяет разделительный знак. Мы использовали «-» в качестве разделителя, чтобы разбить телефонный номер.

Также можно использовать пробел, запятые или другие слова в качестве $ delimiter .

  • Следующим параметром является строка, которую нужно разбить методом explode . Это может быть строковая переменная, предложение и т.д.;
  • Последний параметр указывает максимальное количество подстрок или количество разбиений в строке. Это необязательный параметр.

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

Loading...Loading...