Предположим, что у вас есть фраза «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);
Обратите внимание , что ориентир (то есть то, как нам нужно разбивать строку) вы задаете сами. В нашем случае это была запятая, в вашем же – это может быть число или, например, даже слово.
Для того, чтобы преобразовать строку в массив по разделителю, можно использовать функцию explode()
Необходимые параметры: разделитель и строка.
// Пример 1 $pizza = "кусок1 кусок2 кусок3 кусок4 кусок5 кусок6"; $pieces = explode(" ", $pizza); echo $pieces; // кусок1 echo $pieces; // кусок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; // *
Разбить строку на массив по регулярному выражениюЕсли возможностей explode() недостаточно, то можно использовать более мощную функцию: preg_split () . Она позволяет разбить строку не по фиксированному набору символов, а по
Пример из документации:
// разбиваем строку по произвольному числу запятых и пробельных символов, // которые включают в себя " ", \r, \t, \n и \f $keywords = preg_split("/[\s,]+/", "hypertext language, programming"); print_r($keywords);
Результат:
/* Array ( => hypertext => language => programming) */
Преобразовать строку в массив по количеству символовФункция str_split() преобразует строку в массив, разбивая ее на элементы с заданным количеством символов. Хотите узнать как ее использовать? Посмотрите документацию.
$str = "Hello Friend"; $arr2 = str_split($str, 3); print_r($arr2)
Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали, что такое функции в php . В данной короткой статье я бы хотел поговорить о двух наиболее часто используемых функциях при программировании сценариев на PHP. Это функции explode() и implode() . Функция explode() служит для разбиения строки на части, причем разбиение идёт по определенному разделителю.
Функция implode() служит для объединения строк в одну, вставляя между ними разделитель. Синтаксис у функции explode() следующий:
List explode(string separator, string str1, int limit)
В данном случае мы передаём строку str1 , функция ищет в данной строке разделитель separator , и по нему разбивает строку. Также, если указан параметр limit , то строка будет разбита на limit слов. Чтобы было понятнее давайте на примере рассмотрим данную функцию:
В данной функции главное не перепутать порядок следования аргументов. На мой взгляд было бы намного удобнее, если бы сначала передавалась строка, а затем уже разделитель. Также разделителем может быть не только одиночный символ, но и целая строка (смотря что вам нужно разбить на отдельные части):
В данном случае мы разбили строку по разделителю ABC . Так как мы знаем, что в строке 4 города, то мы все 4 города распределили по переменным.
Работа функции implode() полностью противоположна работе функции explode() . Давайте используем список городов и снова объединим его в одну строку, но используя уже другой разделитель:
Обязательно проверьте работу данного скрипта.
Совет: рекомендуется использовать именно эти функции для разбиения строк (они работают достаточно быстро), а не писать свои аналоги. Золотое правило: прежде чем писать функцию — посмотрите, возможно такая уже есть в справочнике и "изобретать велосипед" не нужно.
Домашнее задание: все же мы учимся программировать, поэтому давайте напишем аналог функции implode() . Данная функция будет принимать первым параметром массив-список, а вторым разделитель, по которому нужно объединить элементы массива в строку. Данная функция должна возвращать строку.
Вот тут я набросал небольшой код, можно подсмотреть. Не торопитесь смотреть код, попробуйте реализовать сами.
arrays split explode (9)Что вы пытаетесь достичь? Вы можете обращаться к символам в строке, как массив:
$s = "abcd"; echo $s;
печатает " a "
У меня есть строка, такая как:
и нужно разделить КАЖДЫЙ символ в массив.
Я, черт возьми, пытался:
Explode("", "123545789");
Но это дало мне очевидное: Предупреждение: никакой разграничитель, определенный в взрыве) ..
Как мне это понять? Я не вижу никакого метода, особенно просто функцию
Попробуй это:
$str = "Hello Friend"; $arr1 = str_split($str); $arr2 = str_split($str, 3); print_r($arr1); print_r($arr2);
Вышеприведенный пример выводит:
Array ( => H => e => l => l => o => => F => r => i => e => n => d) Array ( => Hel => lo => Fri => end)
$array = str_split("$string");
будет работать очень хорошо, но если вы хотите сохранить специальные символы в этой строке, и вы хотите сделать с ними некоторые манипуляции, THAN я бы использовал
Do { $array = mb_substr($string, 0, 1, "utf-8"); } while ($string = mb_substr($string, 1, mb_strlen($string), "utf-8"));
потому что для некоторых моих личных целей было показано, что они более надежны, когда есть проблема со специальными символами
Попробуй это:
$str = "546788"; $char_array = preg_split("//", $str, -1, PREG_SPLIT_NO_EMPTY);
str_split может сделать трюк. Обратите внимание, что строки в PHP можно получить так же, как в массиве символов, в большинстве случаев вам не нужно разделить строку на «новый» массив.
Вот пример, который работает с многобайтовыми (UTF-8) строками.
$str = "äbcd"; // PHP 5.4.8 allows null as the third argument of mb_strpos() function do { $arr = mb_substr($str, 0, 1, "utf-8"); } while ($str = mb_substr($str, 1, mb_strlen($str), "utf-8"));
Это также можно сделать с помощью preg_split() (preg_split("//u", $str, null, PREG_SPLIT_NO_EMPTY)), но в отличие от вышеприведенного примера, который работает почти так же быстро, независимо от размера строки, preg_split() быстро с небольшими строками, но намного медленнее с большими.
Если вы хотите разбить строку, лучше всего использовать:
$array = str_split($string);
Когда у вас есть разделитель, который отделяет строку, вы можете попробовать,
Explode("" ,$string);
Где вы можете передать разделитель в первой переменной внутри взрыва, например:
Explode(",",$string);
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split принимает необязательный второй параметр, длину блока (по умолчанию 1), поэтому вы можете делать такие вещи, как:
$array = str_split("aabbccdd", 2); // $array = aa // $array = bb // $array = cc etc ...
Вы также можете получить части своей строки, рассматривая ее как массив:
$string = "hello"; echo $string; // outputs "e"
Я просто хотел бы сказать, что у меня есть определенный Object, который имел переменные атрибуты (это было в основном сопоставление таблицы, и я менял столбцы в таблице, поэтому атрибуты в объекте, отражающие таблицу, также будут меняться
Class obj { protected $fields = array("field1","field2"); protected $field1 = array(); protected $field2 = array(); protected loadfields(){} // This will load the $field1 and $field2 with rows of data for the column they describe protected function clearFields($num){ foreach($fields as $field) { unset($this->$field[$num]); // This did not work the line below worked unset($this->{$field}[$num]); // You have to resolve $field first using {} } } }
Вся цель $ полей была именно так, что мне не нужно искать везде в коде, когда они меняются, я просто смотрю на начало класса и изменяю список атрибутов и массив массивов $ fields, чтобы отразить новые атрибуты.
Понадобился немного времени, чтобы понять это. Надеюсь, это может помочь кому-то.