Как из строки сделать массив php
Перейти к содержимому

Как из строки сделать массив php

  • автор:

Как создать массив из строки PHP?

Ну у меня в коде не строка с инпутами и кавычками, а элемент массива с этой строкой $arResult[«QUESTIONS»][«q39»][«HTML_CODE»] а в нем подобная строка содержится и вот нужно разложить ее в массив. То есть первая операция у меня выглядит вот так $tab2 = $arResult[«QUESTIONS»][«q39»][«HTML_CODE»]; это я тут для наглядности так написал

15 дек 2022 в 6:20
Заменил кавычки на одинарные $arrtb = str_replace(«\»», «‘», $tab2); , результат не изменился
15 дек 2022 в 6:53
вообще-то, все работает onlinephp.io/c/aa757 вы уверены, что в строке скажем не
?
15 дек 2022 в 7:01

Вы были правы, это на странице
так отображался, а в базе данных он все же
вот так отображался, только заменил и все получилось. Спасибо!

15 дек 2022 в 8:09

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • php
  • массивы
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372

Преобразование строк в массив PHP

Примеры преобразования строк текста в массив по разным разделителям.

Разделить текст по переносам строк

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper. Sed porta justo sed nibh elementum condimentum. Quisque non eros sit amet elit commodo maximus eget a eros."; $array = explode("\n", $text); print_r($array);
Результат:
Array ( [0] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. [1] => Proin blandit magna eu tempus ullamcorper. [2] => Sed porta justo sed nibh elementum condimentum. [3] => Quisque non eros sit amet elit commodo maximus eget a eros. )

Разделить текст по предложениям

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper! Sed porta justo sed nibh elementum condimentum. Quisque non eros sit amet elit commodo maximus eget a eros?"; $text = str_replace("\n", '', $text); $array = preg_split('/(?<=[. ])\s+(?=[a-zа-яё])/i', $text); print_r($array);
Результат:
Array ( [0] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. [1] => Proin blandit magna eu tempus ullamcorper! [2] => Sed porta justo sed nibh elementum condimentum. [3] => Quisque non eros sit amet elit commodo maximus eget a eros? )

Разделить текст по словам

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper."; $text = preg_replace("/[^a-zа-яё0-9\s]/i", '', $text); $array = preg_split('/(\s)/', $text); $array = array_diff($array, array('')); print_r($array);
Результат:
Array ( [0] => Lorem [1] => ipsum [2] => dolor [3] => sit [4] => amet [5] => consectetur [6] => adipiscing [7] => elit [8] => Proin [9] => blandit [10] => magna [11] => eu [12] => tempus [13] => ullamcorper )

Разделить текст по буквам

$text = "Lorem ipsum dolor sit amet"; $array = str_split($text); print_r($array);
Результат:
Array ( [0] => L [1] => o [2] => r [3] => e [4] => m [5] => [6] => i [7] => p [8] => s [9] => u [10] => m [11] => [12] => d [13] => o [14] => l [15] => o [16] => r [17] => [18] => s [19] => i [20] => t [21] => [22] => a [23] => m [24] => e [25] => t )

Разделить текст по нескольким разделителям

$text = "Lorem ipsum dolor sit amet-proin blandit magna eu:Sed porta justo."; $array = preg_split('/[-|:]/u', $text, -1, PREG_SPLIT_NO_EMPTY); print_r($array);
Результат:
Array ( [0] => Lorem ipsum dolor sit amet [1] => proin blandit magna eu [2] => Sed porta justo. )

Если разделитель из нескольких символов, например
и
:

$text = "Lorem ipsum dolor sit amet,
proin blandit magna eu.
Sed porta justo."; $array = preg_split('/(
)|()/u', $text, -1, PREG_SPLIT_NO_EMPTY); print_r($array);
Результат:
Array ( [0] => Lorem ipsum dolor sit amet, [1] => proin blandit magna eu. [2] => Sed porta justo. )

Разделить текст на равные части

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin blandit magna eu tempus ullamcorper."; $chunks = 10; $array = str_split($text); $chunks = array_chunk($array, $chunks, false); $result = array(); foreach ($chunks as $chunk) < $result[] = implode($chunk); >print_r($result);
Результат:
Array ( [0] => Lorem ipsu [1] => m dolor si [2] => t amet, co [3] => nsectetur [4] => adipiscing [5] => elit. Pro [6] => in blandit [7] => magna eu [8] => tempus ull [9] => amcorper. )

27.12.2020, обновлено 05.04.2022

explode

Функция возвращает массив строк, каждая из которых — подстрока, которая образовалась за счёт разделения строки string по границам, которые образовала строка-разделитель separator .

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

Функция вернёт массив, который будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string .

Функция вернёт все компоненты за вычетом заданного в параметре limit количества элементов с конца, если параметр limit отрицательный.

Функция расценит значение limit как 1, если параметр равен нулю.

Замечание:

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

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

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

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

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

Версия Описание
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() - Объединяет элементы массива в строку

Improve This Page

User Contributed Notes 4 notes

2 years ago

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:

$uri = '' ;
$parts = explode ( '/' , $uri );
var_dump ( $parts );

5 months ago

If your data is smaller than the expected count with the list expansion:

$data = "foo:*:1023:1000::/home/foo:/bin/sh" ;
list( $user , $pass , $uid , $gid , $gecos , $home , $shell , $nu ) = explode ( ":" , $data );
?>

The result is a warning not an error:

PHP Warning: Undefined array key 7 in .

The solution is to pad the array to the expected length:

$data = "foo:*:1023:1000::/home/foo:/bin/sh" ;
list( $user , $pass , $uid , $gid , $gecos , $home , $shell , $nu ) = array_pad ( explode ( ":" , $data ), 8 , "" );
// where 8 is the count of the list arguments
?>

3 years ago

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" >

1 year ago

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];

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

str_split

Если указан необязательный параметр length , возвращаемый массив будет разбит на фрагменты, каждый из которых будет иметь длину length , за исключением последнего фрагмента, который может быть короче, если строка делится неравномерно. По умолчанию параметр length равен 1 , то есть размер каждого фрагмента будет один байт.

Ошибки

Если параметр length меньше 1 , будет выброшена ошибка ValueError .

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

Версия Описание
8.2.0 Если параметр string не задан, теперь возвращается пустой массив ( array ). Ранее возвращался массив ( array ), содержащий одну пустую строку
8.0.0 Теперь если параметр length меньше 1 , будет выброшена ошибка ValueError ; ранее, вместо этого выдавалась ошибка уровня E_WARNING , а функция возвращала false .

Примеры

Пример #1 Пример использования функции str_split()

$str = "Hello Friend" ;

$arr1 = str_split ( $str );
$arr2 = str_split ( $str , 3 );

print_r ( $arr1 );
print_r ( $arr2 );

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

Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => [6] => F [7] => r [8] => i [9] => e [10] => n [11] => d ) Array ( [0] => Hel [1] => lo [2] => Fri [3] => end )

Примечания

Замечание:

Функция str_split() производит разбивку по байтам, а не по символам, в случае использования строк в многобайтных кодировках. Используйте функцию mb_str_split() , чтобы разбить строку на кодовые точки.

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

  • mb_str_split() - Возвращает массив символов заданной многобайтовой строки
  • chunk_split() - Разбивает строку на фрагменты
  • preg_split() - Разбивает строку по регулярному выражению
  • explode() - Разбивает строку разделителем
  • count_chars() - Возвращает информацию о символах, входящих в строку
  • str_word_count() - Возвращает информацию о словах, входящих в строку
  • for

Improve This Page

User Contributed Notes 3 notes

1 year ago

The function str_split() is not 'aware' of words. Here is an adaptation of str_split() that is 'word-aware'.

$array = str_split_word_aware (
'In the beginning God created the heaven and the earth. And the earth was without form, and void; and darkness was upon the face of the deep.' ,
32
);

/**
* This function is similar to str_split() but this function keeps words intact; it never splits through a word.
*
* @return array
*/
function str_split_word_aware ( string $string , int $maxLengthOfLine ): array
if ( $maxLengthOfLine <= 0 ) throw new RuntimeException ( sprintf ( 'The function %s() must have a max length of line at least greater than one' , __FUNCTION__ ));
>

$lines = [];
$words = explode ( ' ' , $string );

$currentLine = '' ;
$lineAccumulator = '' ;
foreach ( $words as $currentWord )

$currentWordWithSpace = sprintf ( '%s ' , $currentWord );
$lineAccumulator .= $currentWordWithSpace ;
if ( strlen ( $lineAccumulator ) < $maxLengthOfLine ) $currentLine = $lineAccumulator ;
continue;
>

// Overwrite the current line and accumulator with the current word
$currentLine = $currentWordWithSpace ;
$lineAccumulator = $currentWordWithSpace ;
>

if ( $currentLine !== '' ) $lines [] = $currentLine ;
>

array( 5 ) [ 0 ]=> string ( 29 ) "In the beginning God created "
[ 1 ]=> string ( 30 ) "the heaven and the earth. And "
[ 2 ]=> string ( 28 ) "the earth was without form, "
[ 3 ]=> string ( 27 ) "and void; and darkness was "
[ 4 ]=> string ( 27 ) "upon the face of the deep. "
>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *