Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/112: Рейтинг темы: голосов - 112, средняя оценка - 4.73
10 / 10 / 5
Регистрация: 13.07.2010
Сообщений: 206

Кодировка в функции str_split

07.12.2011, 20:31. Показов 22508. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Из формы ввода методом _POST на другую страницу передаю введенную информацию (строку) которую надо разобрать на символы. т.е. на станице-приемнике у меня:
PHP
1
2
$client = str_split($qwe);
print_r ($client);
Если передаю латинские символы - все в порядке, если же кириллицу - то выводятся "квадратики".
Страницы сохранены в кодировке UTF-8, кодировка просмотра страницы в браузере тоже UTF-8. Как решить проблему с отображением?
попоробовал setlocale() - что то не вышло тоже.

в общем - мне нужно принять слово из формы и загнать его в массив по буквам. если есть другая ффункция, или же я пошел не тем путем - подскажите, пожалуйста.

Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2011, 20:31
Ответы с готовыми решениями:

Спадает кодировка после str_split()
Здравствуйте. Почему-то после использования str_split() результат у меня выводиться абракадаброй. Документ преобразован в utf-8 без ВОМ.

str_split() и кодировки
Доброго времени суток появилась проблемка использования функции str_split(), а именно <?php $string=$_POST; ...

Кодировка в функции mail
При загрузке данного скрипта на платный хостинг, приходят письма в абракатабре, хоть и указал ютф8 ,что можно сделать? <?php ...

11
 Аватар для Draftpad
26 / 27 / 9
Регистрация: 12.10.2011
Сообщений: 83
07.12.2011, 21:09
popoff17, сразу говорю, функция не моя, сам недавно столкнулся с такой траблой, нашёл простенькое решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function str_split_utf8($str) {
    $split = 1;
    $array = array();
    for ($i=0; $i < strlen($str); ){
        $value = ord($str[$i]);
        if($value > 127){
            if ($value >= 192 && $value <= 223)      $split = 2;
            elseif ($value >= 224 && $value <= 239)  $split = 3;
            elseif ($value >= 240 && $value <= 247)  $split = 4;
        } else $split = 1;
        $key = NULL;
        for ( $j = 0; $j < $split; $j++, $i++ ) $key .= $str[$i];
        array_push( $array, $key );
    }
    return $array;
}
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
07.12.2011, 22:11
Ой, ой... Вы чего?
Забудьте вообще про посимвольный анализ в PHP. Есть регулярки же

PHP
1
2
3
4
5
    function mb_str_split($str)
    {
        preg_match_all('#.{1}#uis', $str, $out);
        return $out[0];
    }
0
10 / 10 / 5
Регистрация: 13.07.2010
Сообщений: 206
08.12.2011, 07:08  [ТС]
Цитата Сообщение от nubo Посмотреть сообщение
Ой, ой... Вы чего?
Забудьте вообще про посимвольный анализ в PHP. Есть регулярки же

PHP
1
2
3
4
5
    function mb_str_split($str)
    {
        preg_match_all('#.{1}#uis', $str, $out);
        return $out[0];
    }
а чем плох посимвольный анализ? я с регулярками не сталкивался, поэтому спрашиваю.

Добавлено через 6 минут
Цитата Сообщение от nubo Посмотреть сообщение
Ой, ой... Вы чего?
Забудьте вообще про посимвольный анализ в PHP. Есть регулярки же

PHP
1
2
3
4
5
    function mb_str_split($str)
    {
        preg_match_all('#.{1}#uis', $str, $out);
        return $out[0];
    }
попробовал preg_split - то же самое, кодировка слетает =\
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
08.12.2011, 08:00
Цитата Сообщение от popoff17 Посмотреть сообщение
а чем плох посимвольный анализ? я с регулярками не сталкивался, поэтому спрашиваю.
Ну есть избитая фраза про микроскоп и гвозди. Сравните просто объемы кода - раз, скорость исполнения - два.
0
 Аватар для Draftpad
26 / 27 / 9
Регистрация: 12.10.2011
Сообщений: 83
08.12.2011, 09:29
popoff17, неужели и с моим способом не работает? Вы случайно с iconv() не балуетесь?

Цитата Сообщение от nubo Посмотреть сообщение
Ой, ой... Вы чего?
Забудьте вообще про посимвольный анализ в PHP. Есть регулярки же
Я изврат, это раз. Ваш пример у меня не работает, это два.
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
08.12.2011, 09:33
Цитата Сообщение от Draftpad Посмотреть сообщение
Я изврат, это раз. Ваш пример у меня не работает, это два.
Вот так не работает???
PHP
1
2
3
4
5
6
7
8
    function mb_str_split($str)
    {
        preg_match_all('#.{1}#uis', $str, $out);
        return $out[0];
    }
    
    echo '<pre>';
    print_r(mb_str_split('Текст, который нужно разбить на символы'));
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
09.12.2011, 15:37
Вы сейчас вообще офигеете

PHP
1
$array = explode("", $str); // $array - массив букв, $str - ваша строка
А для кодировок -
PHP
1
 iconv()
.
0
 Аватар для nubo
113 / 70 / 2
Регистрация: 31.07.2010
Сообщений: 337
09.12.2011, 19:29
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Вы сейчас вообще офигеете

PHP
1
$array = explode("", $str); // $array - массив букв, $str - ваша строка
А для кодировок -
PHP
1
 iconv()
.
И что? Работает?
Не верю (с)
0
 Аватар для boong
154 / 124 / 11
Регистрация: 11.01.2010
Сообщений: 434
10.12.2011, 04:34
popoff17, accept-charset="кодировка" для <form> не пробовали прописать?
0
Amp41
02.08.2012, 20:26
Как известно utf-8 это многобайтовая кодировка, по этому создается масса проблем как в подсчете символов, так и с другими манимупуляциями. Такие функции как str_split() не работают с многобайтовыми кодировками.
Вообщем вариант не лучший, но лучшего ничего сделать не удалось.
Используем preg_split() с опцией u


PHP
1
2
3
$text = 'Привет Мир'; //собственно сам текст
$text = preg_split('//u',$text,-1,PREG_SPLIT_NO_EMPTY);
print_r($text);

выводит
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
    [0] => П
    [1] => р
    [2] => и
    [3] => в
    [4] => е
    [5] => т
    [6] =>  
    [7] => М
    [8] => и
    [9] => р
)
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 8
09.05.2018, 17:55
Спасибо за эту тему!)
Долго бы я мучился с посимвольным анализом на кириллице, пытаясь понять, почему доступные функции так ведут себя!!!
А тут прочитал, применил, сразу заработало!)

Добавлено через 52 минуты
Вопрос только... а символы из этого массива по отдельности можно будет достать?
Что-то у меня не получилось...

Добавлено через 1 час 33 минуты
можно! разобрался в своей ошибке!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2018, 17:55
Помогаю со студенческими работами здесь

кодировка и функции str_replace
if (($db_product-&gt;f(&quot;product_title&quot;) != &quot;&quot;) &amp;&amp; ($turn_on_edit == &quot;Y&quot;)) { if ($append_category == &quot;Y&quot;) { if...

Кодировка цветов в функции CreateSolidBrush
Здравствуйте. Скажу честно, нормально сформулировать вопрос не могу, вообще не разбираюсь в этом. Суть. Друг через какие-то неизвестные...

строковые функции php и кодировка
Уже давно использую PHP. Но обычно работал в кодировке windows-1251, а с недавнего времени перешел на utf-8. А на днях попал в глупую...

кодировка при функции mb_convert_encoding
При использовании функции mb_convert_encoding, не правильно отображаются файлы в имени которого используются русские и английские буквы, а...

Кодировка при отправке писем с использованием функции mail()
Уважаемые форумчане, подскажите что мне сделать с этой непутевой функцией. $headers = 'Content-type: text/html; charset=utf-8' ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru