powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: аналог htmlentities() для кириллицы
6 сообщений из 6, страница 1 из 1
PHP: аналог htmlentities() для кириллицы
    #37668516
x128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо конвертировать строку UTF8 а-ля htmlentities(), но только для русских букв:
А -> А
Б -> Б
и т.д.

Подскажите плиз функцию или regexp какой-нибудь!
...
Рейтинг: 0 / 0
PHP: аналог htmlentities() для кириллицы
    #37668519
x128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри...
Код: sql
1.
2.
А -> А
Б -> Б
...
Рейтинг: 0 / 0
PHP: аналог htmlentities() для кириллицы
    #37668538
x128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал по-тупому. Надеюсь, можно проще/быстрее, чем это:

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
function encode($s)
{
	$t = array (
	
		'А' => 'А',
		'Б' => 'Б',
		'В' => 'В',
		'Г' => 'Г',
		'Д' => 'Д',
		'Е' => 'Е',
		'Ж' => 'Ж',
		'З' => 'З',
		'И' => 'И',
		'Й' => 'Й',
		'К' => 'К',
		'Л' => 'Л',
		'М' => 'М',
		'Н' => 'Н',
		'О' => 'О',
		'П' => 'П',
		'Р' => 'Р',
		'С' => 'С',
		'Т' => 'Т',
		'У' => 'У',
		'Ф' => 'Ф',
		'Х' => 'Х',
		'Ц' => 'Ц',
		'Ч' => 'Ч',
		'Ш' => 'Ш',
		'Щ' => 'Щ',
		'Ъ' => 'Ъ',
		'Ы' => 'Ы',
		'Ь' => 'Ь',
		'Э' => 'Э',
		'Ю' => 'Ю',
		'Я' => 'Я',
		
		'а' => 'а',
		'б' => 'б',
		'в' => 'в',
		'г' => 'г',
		'д' => 'д',
		'е' => 'е',
		'ж' => 'ж',
		'з' => 'з',
		'и' => 'и',
		'й' => 'й',
		'к' => 'к',
		'л' => 'л',
		'м' => 'м',
		'н' => 'н',
		'о' => 'о',
		'п' => 'п',
		'р' => 'р',
		'с' => 'с',
		'т' => 'т',
		'у' => 'у',
		'ф' => 'ф',
		'х' => 'х',
		'ц' => 'ц',
		'ч' => 'ч',
		'ш' => 'ш',
		'щ' => 'щ',
		'ъ' => 'ъ',
		'ы' => 'ы',
		'ь' => 'ь',
		'э' => 'э',
		'ю' => 'ю',
		'я' => 'я',
		
		'Ё' => 'Ё',
		'ё' => 'ё',
	
	);
	return strtr($s, $t);
}
...
Рейтинг: 0 / 0
PHP: аналог htmlentities() для кириллицы
    #37668566
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x128,

А исходные строки у тебя в какой кодировке?
Если в 1251, то очевидно:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if(ch == 'Ё')
{
    return 'Ё';
}
else if(ch == 'ё')
{
    return 'ё';
}
else if(ch >= 'A')
{
    return '&#'.(ord(ch) + 848).';';
}



Если ж в UTF8, то для php каждая твоя русская буква - это два символа, как раз с теми кодами, которые ты собираешься получить. Т.е. надо проверить верхний байт в соответствии с правилами кодировки двухбайтовых кодов в UTF8, удалить из обоих байтов служебные биты и получить из оставшихся битов то самое число (1040, например). Но кто сказал, что этот визуально неочевидный код (по сравнению с твоим) будет работать быстрее (ведь это целый цикл строковых операций). Для 1251 можешь сравнить свой с приведенным выше по производительности (если не лень).
...
Рейтинг: 0 / 0
PHP: аналог htmlentities() для кириллицы
    #37668567
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле, что в обоих случаях имеем цикл перебора строки посимвольно, который может оказаться медленнее твоего примера. Но на написание случая обработки UTF8 надо еще время потратить, а для 1251 - тривиально, потому можно и протестить.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
PHP: аналог htmlentities() для кириллицы
    #39355396
Tayfur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x128Сделал по-тупому. Надеюсь, можно проще/быстрее, чем это:

Код: php
1.
2.
3.
4.
5.
6.
7.
function encode($s)
{
	$t = array (
	
		'А' => 'А',
		'Б' => 'Б',
......


Спасибо, заюзал.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: аналог htmlentities() для кириллицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]