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

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

Код: 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
18.02.2012, 17:37
    #37668566
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: аналог htmlentities() для кириллицы
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
18.02.2012, 17:40
    #37668567
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: аналог htmlentities() для кириллицы
В смысле, что в обоих случаях имеем цикл перебора строки посимвольно, который может оказаться медленнее твоего примера. Но на написание случая обработки UTF8 надо еще время потратить, а для 1251 - тривиально, потому можно и протестить.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.11.2016, 14:36
    #39355396
Tayfur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: аналог htmlentities() для кириллицы
x128Сделал по-тупому. Надеюсь, можно проще/быстрее, чем это:

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


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


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