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

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

  • автор:

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

Имеется строка вида: 192.168.0.1@User;p@ssword . Мне нужно положить в массив отдельно 192.168.0.1, User и p@ssword, чтобы пользоваться этими данными по отдельности. Дело в том, что, если запись будет в таком виде — 192.168.0.1@User;password , то мне удается получить значения через этот код:

$data = explode("@", "192.168.0.1@User;password"); $data2= explode(";", $data[1]); 

В итоге я пользуюсь всеми тремя значениями:

$data[0] (192.168.0.1) $data2[0] (User) $data2[1] (password) 

Получается, что проблема возникает, когда в строке два символа — @. Помогите, пожалуйста, разобраться.

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

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

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

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