Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2015, 21:52   #1
Елек
Новичок
Джуниор
 
Регистрация: 15.11.2015
Сообщений: 10
По умолчанию Разбить слово на буквы (Php)

Дано слово (количество букв изначально неизвестно) - нужно разбить его на буквы, для дальнейшей работы с ними.. Подскажите, какую нужно использовать функцию?
Елек вне форума Ответить с цитированием
Старый 16.11.2015, 09:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что в PHP к строке нельзя обращаться как к массиву букв?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2015, 11:16   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что в PHP к строке нельзя обращаться как к массиву букв?
Можно обращаться к отдельным символам строки, как к элементам массива, по их числовому индексу (порядковому номеру символа в строке, начиная с 0).
НО при этом:
– со строкой нельзя работать, как с массивом (использовать циклы или функции для обработки массивов)
– возникают проблемы с многобайтными кодировками

Поэтому, лучше таки разбивать строку в нормальный массив символов.
Для латиницы можно использовать str_split.
Для кириллицы и других многобайтных кодировок можно использовать аналоги str_split, реализованные при помощи регулярных выражений.
Разбить строку в массив по одному символу:
PHP код:
function mb_str_split($string) { 
    return 
preg_split('#(?<!^)(?!$)#u'$string); 

Разбить строку в массив по заданному количеству символов:
PHP код:
function mb_str_split($str$length 1){
    
preg_match_all('#.{' $length '}#uis'$str$out);
    return 
$out[0];

Andkorol вне форума Ответить с цитированием
Старый 16.11.2015, 11:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно. но возникают проблемы, если строка уникодная.
например, в UTF-8 русские буквы занимают два байта в строке, латиница - по одному байту.
Если кодировка на сайте однобайтная (например, Windows-1251) - то задача тривиальна, можно обращаться к любому символу строки.

если же на сайте используется кодировка UTF-8
то могу предложить вариант с перекодировкой:
Код:
<!DOCTYPE html>
<html>
 <head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 <meta charset="utf-8">
<title>String to array</title>
<body>
<?php
error_reporting (E_ALL);

//mb_internal_encoding('utf-8');
$s='Это просто test';

$str = iconv('UTF-8', 'windows-1251', $s);
foreach (str_split($str) as $index => $value) {
	echo "$index. Код буквы: ".ord($value)." Значение буквы: ".iconv('windows-1251','UTF-8', $value)." <br>\n";
}
?>
</body>
</html>

Andkorol, спасибо. Ваши варианты рабочие!

Последний раз редактировалось Serge_Bliznykov; 16.11.2015 в 11:25.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить одну строку на несколько, ориентируясь на Заглавные буквы seto Microsoft Office Excel 13 28.08.2015 13:46
выделить первые буквы по которым можно прочитать слово андрей.... Помощь студентам 0 21.12.2012 17:10
Разбить ячейку на буквы и присвоить каждой букве число Apostolx Microsoft Office Excel 8 10.02.2012 10:17
Разбить слово из Edita. harrison Помощь студентам 2 30.01.2010 22:11
Разбить слово на буквы zvyagin1 Общие вопросы C/C++ 3 21.06.2009 01:07