Перейти к содержимому

Как разбить строку на символы php

  • автор:

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 исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

    PHP. Разбить строку на слова

    Разбить строку на слова можно с помощью функции 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

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

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