Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143

Получение второго символа строки

15.05.2014, 23:28. Показов 3680. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Появилась необходимость получения второго символа строки. И вот что из этого получилось:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 
header("Content-Type:text/html; charset=utf-8");
$str_en = "Coffee";
$str_ru = "Кофе";
$str_ru = mb_convert_encoding($str_ru, "ASCII", "UTF-8");
 
echo 'en: ' . $str_en . ' ru: ' . $str_ru . '<hr />';
//detection of encoding
echo 'en: ' . mb_detect_encoding($str_en) . ' ru: ' . mb_detect_encoding($str_ru) . '<br />';
//getting of second element
echo 'en: ' . $str_en[1] . ' ru: ' . $str_ru[1] . '<br />';
//getting of second element
echo 'en: ' . mb_strcut($str_en, 1, 1) . ' ru: ' . mb_strcut($str_ru, 1, 1) . '<br />';
//adding of slashes
echo 'en: ' . addcslashes($str_en, 'a..z') . ' ru: ' . addcslashes($str_ru, 'а..я') . '<br />';
//getting of code of symbol
echo 'en: ' . ord($str_en) . ' ru: ' . ord($str_ru) . '<br />';
//getting of symbol
echo 'en: ' . chr(67) . ' ru: ' . chr(63) . '<br />';
//splitting of string
echo 'en: ' . chunk_split($str_en, 1) . ' ru: ' . chunk_split($str_ru, 1) . '<br />';
//return information about characters used in a string
echo 'en: ' . count_chars($str_en, 3) . ' ru: ' . count_chars($str_ru, 3) . '<br />';
//the strings containing all unique characters is returned. 
echo 'en: ' . lcfirst($str_en) . ' ru: ' . lcfirst($str_ru) . '<br />';
//parses the strings into variables
$arr_str_en=array();
$arr_str_ru=array();
parse_str("$str_en",$arr_str_en);
parse_str($str_ru,$arr_str_ru);
echo 'en: ';
print_r($arr_str_en);
echo 'ru: ';
print_r($arr_str_ru);
echo '<br />';
вот что выводит:
en: Coffee ru: ???? en: ASCII ru: ASCII
en: o ru: ?
en: o ru: ?
en: C\o\f\f\e\e ru: ????
en: 67 ru: 63
en: C ru: ?
en: C o f f e e ru: ? ? ? ?
en: Cefo ru: ?
en: coffee ru: ????
en: Array ( [Coffee] => ) ru: Array ( [????] => )

если закоментить строку $str_ru = mb_convert_encoding($str_ru, "ASCII", "UTF-8"); легче не становиться:
en: Coffee ru: Кофе en: ASCII ru: UTF-8
en: o ru: �
en: o ru: �
en: C\o\f\f\e\e ru: \320�\320\276\321�\320\265
en: 67 ru: 208
en: C ru: ?
en: C o f f e e ru: � � � � � � � �
en: Cefo ru: ������
en: coffee ru: Кофе
en: Array ( [Coffee] => ) ru: Array ( [Кофе] => )

PHP Version : 5.5.9-1ubuntu4

у меня сейчас только 2 вопроса: как мне с этим жить? и как достать все таки второй символ строки)
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2014, 23:28
Ответы с готовыми решениями:

Замена каждого второго символа в строке
Дана строка &quot;привет всем&quot; . Надо заменить каждый второй символ на &quot;и&quot;.

Получение данных из БД со второго раза
Добрый день! Имеется форма для редактирования существующих записей в БД. В нее, получается, из БД приходят данные. Но приходят они туда со...

Получение кода символа в unicode
Есть специальная функция? Загоняешь &quot;п&quot;, получаешь &quot;1087&quot;. Желательно из коробки, ибо прописывать для каждого символа свой код - долго, и...

14
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
15.05.2014, 23:43
Цитата Сообщение от svkpro Посмотреть сообщение
и как достать все таки второй символ строки)
PHP
1
2
3
4
<?
$string="hello";
echo $string[1];
?>
вывод
Code
1
e
В чем проблема?

А у Вас в коде вообще что то страшное. Устанавливаете через заголовок кодировку UTF-8, при этом саму строку конвертируете в ASCII, а в самом редакторе небось вообще какая нибудь третья кодировка... И что вообще Вы хотели добиться этим скриптом? Набор функций какой то...
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
15.05.2014, 23:48  [ТС]
разве из кода не понятно что достать нужно из русской строки. Я же спецом показал реакцию en и ru строки на одни и те же функции.
вот моя такая же строка:
echo 'en: ' . $str_en[1] . ' ru: ' . $str_ru[1] . '<br />';
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
15.05.2014, 23:49
Цитата Сообщение от svkpro Посмотреть сообщение
разве из кода не понятно что достать нужно из русской строки. Я же спецом показал реакцию en и ru строки на одни и те же функции.
PHP
1
2
3
4
<?
$string="Привет";
echo $string[1];
?>
вывод
Code
1
р
Многое изменилось.
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
15.05.2014, 23:53  [ТС]
Ну я же показываю что выводит браузер(((( читает побитово. понимаете??? и выходит битая кодировка. возможно дело в версии php
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
15.05.2014, 23:55
Цитата Сообщение от svkpro Посмотреть сообщение
Ну я же показываю что выводит браузер(((( читает побитово. понимаете??? и выходит битая кодировка. возможно дело в версии php
может дело в том что надо прочитать что я писал выше?

Разберитесь в какой кодировке пишете Вы в своем редакторе для начала. Если для Вас она не принципиальна, то смените на ANSI (windows cp-1251). И все получится. Если принципиальна, то хотя бы скажите какая.
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
15.05.2014, 23:58  [ТС]
так теперь получая инфу из базы в utf-8 я каждый раз должен ее перегонять в 1251 а после обработки обратно????

Добавлено через 42 секунды
в редакторе все проекты в utf-8
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.05.2014, 00:02
Цитата Сообщение от svkpro Посмотреть сообщение
так теперь получая инфу из базы в utf-8 я каждый раз должен ее перегонять в 1251 а после обработки обратно????
Нет, зачем?
Во-первых, я написал это если НЕ принципиально.
Во-вторых, откуда мне было знать где Вы их берете?
В-третьих, зачем тогда перекодировать их в ASCII, при этом выставлять кодировку в заголовках UTF-8?
В-четвертых, опять же ничего сложного:
PHP
1
2
3
4
5
<?
// кодировка документа UTF-8
$string="Привет";
echo mb_substr($string, 1, 1, "UTF-8");
?>
Вывод
Code
1
р
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
16.05.2014, 00:24  [ТС]
то есть только с функциями работать которые поддерживают мультибайтовую кодировку?

Добавлено через 8 минут
в любом случае за ответы спасибо.

Добавлено через 6 минут
да может еще подскажете как теперь получить код этого символа? только не говорите что ord();
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.05.2014, 01:12
Цитата Сообщение от svkpro Посмотреть сообщение
то есть только с функциями работать которые поддерживают мультибайтовую кодировку?
да
Цитата Сообщение от svkpro Посмотреть сообщение
да может еще подскажете как теперь получить код этого символа? только не говорите что ord();
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function uniord($c) {
        $h = ord($c{0});
        if ($h <= 0x7F) {
            return $h;
        } else if ($h < 0xC2) {
            return false;
        } else if ($h <= 0xDF) {
            return ($h & 0x1F) << 6 | (ord($c{1}) & 0x3F);
        } else if ($h <= 0xEF) {
            return ($h & 0x0F) << 12 | (ord($c{1}) & 0x3F) << 6
                                     | (ord($c{2}) & 0x3F);
        } else if ($h <= 0xF4) {
            return ($h & 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12
                                     | (ord($c{2}) & 0x3F) << 6
                                     | (ord($c{3}) & 0x3F);
        } else {
            return false;
        }
    }
$string = "Привет";
$n = uniord(mb_substr($string, 1, 1, "UTF-8"));
echo "dec: ".$n;
echo "<br/>\r\n 16ричный и 2ичный вид для 2байтных символов:";
printf("<br/>\r\nhex: %02X %02X", $n >> 8, $n & 0x00FF);
printf("<br/>\r\nbin: %08b %08b", $n >> 8, $n & 0x00FF);
?>
Вывод
Code
1
2
3
4
dec: 1088
16ричный и 2ичный вид для 2байтных символов:
hex: 04 40
bin: 00000100 01000000
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
16.05.2014, 02:00  [ТС]
я начинаю разочаровываться в php(((((
0
16.05.2014, 21:42

Не по теме:

Цитата Сообщение от svkpro Посмотреть сообщение
я начинаю разочаровываться в php(((((
php начинает разочаровываться в Вас %-)

0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
16.05.2014, 22:25  [ТС]
Надо признать, что затруднения есть при работе с однобитовыми кодировками. А Вы, pav1uxa, я смотрю полагаете, что обсирая других можно показать себя с лучшей стороны. Так я Вам так скажу, лучше молчать и казаться глупым, чем раскрыть рот и развеять все сомнения
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
16.05.2014, 23:49
Цитата Сообщение от svkpro Посмотреть сообщение
А Вы, pav1uxa, я смотрю полагаете, что обсирая других можно показать себя с лучшей стороны. Так я Вам так скажу, лучше молчать и казаться глупым, чем раскрыть рот и развеять все сомнения
Во-первых, я нигде никого не "обсирал". Это шутка была (там даже смайлик стоит специально, дабы подчеркнуть это).
Во-вторых, я пытался изо всех сил помочь Вам, не понимаю почему такое отношение ко мне...

Добавлено через 2 минуты
Цитата Сообщение от svkpro Посмотреть сообщение
Так я Вам так скажу, лучше молчать и казаться глупым, чем раскрыть рот и развеять все сомнения
Какие сомнения? Что я глупый? Вы спросили как работать с многобайтовыми кодировками - я вам ответил. Вы спросили как взять второй символ строки с многобайтовой кодировкой - я вам ответил. Вы спросили как получить код символа в многобайтовой кодировке - я вам ответил. И по прежнему Вас чем то разочаровывает php, при этом Вы даже не говорили что опять Вам не нравится, а во всех моих ответах Вы увидели какие то "обсирания".
0
 Аватар для svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
16.05.2014, 23:55  [ТС]
Возможно мы друг друга не поняли. Но Вам не кажется что "PHP разачаровывается в Вас" мало походит на шутку. А за ответы по теме спасибо, искренне и от души.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2014, 23:55
Помогаю со студенческими работами здесь

Получение символа из кода unicode
Помогите найти такую функцию. Пихаешь &quot;1087&quot;, получаешь &quot;п&quot;

Поиск строки в фале и получение номера строки
Как выполнить поиск в фале типа : link1 link2 link3 по части слова (Например &quot;lin&quot;) и получить номера всех строк, в которых были...

Получить часть строки со второго символа с конца, до символа "\" слева
Подскажите пожалуйста, как получить часть строки со второго символа с конца, до символа \ слева строка формата:...

Удаление каждого второго символа из строки
Составить функцию удаляющую из строки каждый второй символ с 5 по 15.

Вывести позицию второго буквенного символа строки
Допустим, есть строка &quot;1234 John&quot; я создаю запрос select REGEXP_INSTR('1234 John','{2,}') from dual Что я делаю не так? ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru