mb_str_split
Функция вернёт массив строк, это версия функции str_split() с поддержкой кодировок переменного размера символов, а также кодировок фиксированного размера из 1-, 2- или 4-байтовых символов. Если указан параметр length , строка разбивается на части заданной длины в символах (не байтах). Может быть указан необязательный параметр encoding , это хорошая практика.
Список параметров
Строка ( string ) для разделения на символы или части.
Если указан, каждый элемент возвращаемого массива будет состоять из нескольких символов вместо одного символа.
Параметр encoding — это кодировка символов. Если он опущен или равен null , для него будет установлена внутренняя кодировка символов.
Строка, указывающая одну из поддерживаемых кодировок.
Возвращаемые значения
Возвращает массив строк.
Список изменений
| Версия | Описание |
|---|---|
| 8.0.0 | Теперь параметр encoding может принимать значение null . |
| 8.0.0 | Функция больше не возвращает false в случае возникновения ошибки. |
Смотрите также
- str_split() — Преобразовывает строку в массив
User Contributed Notes 3 notes
1 year ago
if( !function_exists(‘mb_str_split’)) <
function mb_str_split( $string = », $length = 1 , $encoding = null ) <
if(!empty($string)) <
$split = array();
$mb_strlen = mb_strlen($string,$encoding);
for($pi = 0; $pi < $mb_strlen; $pi += $length)<
$substr = mb_substr($string, $pi,$length,$encoding);
if( !empty($substr)) <
$split[] = $substr;
>
>
>
return $split;
>
>
3 years ago
Note: function return NULL if can’t convert argument type.
if (! in_array ( $encoding , mb_list_encodings (), true )) static $aliases ;
if ( $aliases === null ) $aliases = [];
foreach ( mb_list_encodings () as $encoding ) $encoding_aliases = mb_encoding_aliases ( $encoding );
if ( $encoding_aliases ) foreach ( $encoding_aliases as $alias ) $aliases [] = $alias ;
>
>
>
>
if (! in_array ( $encoding , $aliases , true )) trigger_error ( ‘mb_str_split(): Unknown encoding «‘ . $encoding . ‘»‘ , E_USER_WARNING );
return null ;
>
>
$result = [];
$length = mb_strlen ( $string , $encoding );
for ( $i = 0 ; $i < $length ; $i += $split_length ) $result [] = mb_substr ( $string , $i , $split_length , $encoding );
>
return $result ;
>
?>
3 years ago
Lazy polyfill for UTF-8 only:
function utf8_str_split(string $input, int $splitLength = 1)
$re = \sprintf(‘/\\G.+/us’, $splitLength);
\preg_match_all($re, $input, $m);
return $m[0];
>
- Функции для работы с многобайтовыми строками
- mb_check_encoding
- mb_chr
- mb_convert_case
- mb_convert_encoding
- mb_convert_kana
- mb_convert_variables
- mb_decode_mimeheader
- mb_decode_numericentity
- mb_detect_encoding
- mb_detect_order
- mb_encode_mimeheader
- mb_encode_numericentity
- mb_encoding_aliases
- mb_ereg_match
- mb_ereg_replace_callback
- mb_ereg_replace
- mb_ereg_search_getpos
- mb_ereg_search_getregs
- mb_ereg_search_init
- mb_ereg_search_pos
- mb_ereg_search_regs
- mb_ereg_search_setpos
- mb_ereg_search
- mb_ereg
- mb_eregi_replace
- mb_eregi
- mb_get_info
- mb_http_input
- mb_http_output
- mb_internal_encoding
- mb_language
- mb_list_encodings
- mb_ord
- mb_output_handler
- mb_parse_str
- mb_preferred_mime_name
- mb_regex_encoding
- mb_regex_set_options
- mb_scrub
- mb_send_mail
- mb_split
- mb_str_pad
- mb_str_split
- mb_strcut
- mb_strimwidth
- mb_stripos
- mb_stristr
- mb_strlen
- mb_strpos
- mb_strrchr
- mb_strrichr
- mb_strripos
- mb_strrpos
- mb_strstr
- mb_strtolower
- mb_strtoupper
- mb_strwidth
- mb_substitute_character
- mb_substr_count
- mb_substr
- Copyright © 2001-2024 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
PHP. Разбить строку на слова
Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Разбить строку на слова можно с помощью функции strtok.
Данная функция принимает 2 параметра.
Первый параметр это обрабатываемая строка.
Второй параметр — строка содержащая символы по которым строка будет разделена на слова.Строка входящая в первый параметр:
$string = "Текст\tдля\nпроверки strtok";Массив полученных слов из строки:
$array_words = array();Символами разделителя будут выступать: пробел, табуляция и перенос строки:
$separator = " \t\n";Выполняем разделение и записываем значение в переменную $tok:
$tok = strtok($string, $separator);В переменную $tok будет записано лишь первое слово. Получение массива вех строк будет описано далее.
Считается, что исходная строка передается при первом вызове функции.
В последующих вызовах передаются лишь символы разделители, так как эта функция запоминает переданную строку и запоминает позиции в этой строке.$tok = strtok(" \t\n");Для работы с новой строкой необходимо снова вызывать функцию с двумя параметрами.
Получаем массив со словами определенными в строке:
while($tok) { $array_words[] = $tok; $tok = strtok(" \t\n"); >var_dump($array_words);Значение результата полученного на экране:
array(5) < [0]=>string(5) «Текст» [1]=> string(3) «для» [2]=> string(8) «проверки» [3]=> string(7) «функции» [4]=> string(6) «strtok» >
Исходный код примера:
var_dump($array_words);Cтроку в массив по разделителю в PHP: explode, str_split, strtok — что выбрать?
Для того, чтобы преобразовать строку в массив по разделителю, можно использовать функцию 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. preg_split: разбить строку на массив по регулярному выражению
Если возможностей explode() недостаточно, то можно использовать более мощную функцию: preg_split(). Она позволяет разбить строку не по фиксированному набору символов, а по регулярному выражению.
Пример из документации:
// разбиваем строку по произвольному числу запятых и пробельных символов, // которые включают в себя " ", \r, \t, \n и \f $keywords = preg_split("/[\s,]+/", "hypertext language, programming"); print_r($keywords);/* Array ( [0] => hypertext [1] => language [2] => programming ) */
Преобразовать строку в массив по количеству символов
Функция str_split() преобразует строку в массив, разбивая ее на элементы с заданным количеством символов. Хотите узнать как ее использовать? Посмотрите документацию.
$str = "Hello Friend"; $arr2 = str_split($str, 3); print_r($arr2)
Array ( [0] => Hel [1] => lo [2] => Fri [3] => end )
Функция strtok(): разбиение строки на токены
Есть еще функция strtok() . Она позволит задать набор из нескольких символов-разделителей, для разделения строки по словам: читать подробнее про strok.
Свежие записи
- SQL UPDATE: примеры обновления строк в таблице
- PHP: substr и мощные альтернативы, чтобы вырезать часть строки
- Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции
- Скачать ShowKeyPlus: ссылка на последнюю официальную версию, скачивание, установка
- Как создать файл в Linux: 12 способов
- SQL INSERT INTO: примеры вставки строк в таблицу БД MySQL
- PHP: str_replace — замена или удаление подстроки в строке
- Функция date() в php: распространенные форматы, примеры, советы
- cURL в PHP: примеры POST, GET запросов с headers, cookie, JSON и многопоточностью
- JSON в PHP: примеры json_encode, json_decode, работа с кириллицей и utf-8
- Файл gitignore — примеры и документация
- Сортировка массивов в php: ksort, asort и прочие sort’ы
- jQuery onclick: как выполнить код при клике на кнопку
- 500 Internal Server Error — в чем причина?
- SMTP от Yandex: как отправить письма из PHP — пример настроек
- No such file or directory — в чем причина?
- Как получить первый элемент массива в php
- Cтроку в массив по разделителю в PHP: explode, str_split, strtok — что выбрать?
- 301 редирект на https с www через htaccess
- Как в php добавить к массиву другой массив?
- 301 редирект на https без www с помощью htaccess
- Регулярные выражения в PHP
- PHP json_decode — как декодировать результат в массив?
- Yii2 ActiveRecord шпаргалка по составлению запросов
- Поиск подстроки в строке с помощью PHP
- Отправка почты на php
- Как подключить php код в html
- Конвертировать массив в строку при помощи PHP
- Подключение одного php файла в другой
- Подборка ссылок для веб-разработчика
- Проблема с кириллицей в PHPWord
Как разбить строку на символы php
Если у вас windows-1251, то и для кириллицы этот способ вполне рабочий!
Разбить текст на кириллице с помощью str_split -> utf — 8
Как разбить/разделить текст на кириллице с помощью str_split, нам нужно проверить таким же образом, какой результаты будет выводить var_dump
Например буква P русского алфавита в кодировке UTF-8 покажет через var_dump():
Как вы поняли. str_split для кириллицы в UTF-8 по умолчанию не подойдет! Нам нужно. преобразовать строку из UTF-8 в windows-125 :
iconv(«UTF-8», «windows-1251», $text)
Если мы выведем здесь вот такой вариант разделения текста на символы:
$text=»Это просто текст»;
print_r(iconv(«UTF-8», «windows-1251», $text));
Как можно такой результат понять!? Вот так будет отображаться текст, кодировку которого не переваривает кодировка страницы. Мы немного писали о кодировке -> здесь
Что делать!?Нам нужно каждую букву обратно перекодировать в UTF-8, это можно сделать в цикле:
$text=»Это просто текст»;
$str = iconv(«UTF-8», «windows-1251», $text);
foreach (str_split($str) as $index => $value)
$переменная .= iconv(«windows-1251″,»UTF-8″, $value).»
\n»;Разбить текст с помощью preg_split
Еще один вариант разбиения строки посимвольно, который я теперь использую:
preg_split — Разбивает строку по регулярному выражению
pattern — отсутствует, поэтому «//»
u — используется кодировка UTF-8
Специальное значение limit, равное -1, подразумевает отсутствие ограничения
PREG_SPLIT_NO_EMPTY — если этот флаг указан, функция preg_split() вернет только непустые подстроки.
Возвращает массив символов.
Как разбить английский текст на символы с помощью preg_split
С теория разобрались, теперь пришло время примеров! У нас есть текст на английском языке, пропустим его через функцию preg_split и посмотрим, что получится:
$text5 =»Hello world»;
print_r(preg_split(«//u», $text5 , -1, PREG_SPLIT_NO_EMPTY) ) ;
Пример разделения строки на английском языке на символы
Как видим на нашем примере, текст/строка на английском языке прекрасно разбита на символы с помощью preg_split