PDA

Показать полную графическую версию : [решено] MySql, PHP | Что на самом деле хранится в базе?


hasherfrog
09-04-2009, 13:30
Всем привет.

У меня своего рода затруднение. Есть форум, юзер постит, в базу попадает. Всё отлично.

Предположим, постится какой-нибудь хитрый unicode-символ, которого в ASCII-кодировке нет.
Я хочу узнать, как этот символ хранится в базе. В виде hex-кода его хочу увидеть. Хоть как-нибудь.

Предположим, пользователь постит
1 - – — 1

Это соответствует минусу, вордовому тире &#8211 (UTF-8 (e2, 80, 93) тАУ) и коду &#151 , соответственно.

Как, в шестнадцатиричном виде, это будет лежать в базе?
Я написал затычку, она говорит что там будет
31 20 2d 20 96 20 97 20 31 3c 62 72 3e

Код затычки:$hex="";
for ($i=0; $i < strlen($txt); $i++)
{ $hex .= dechex(ord($txt[$i])); $hex .= ' '; }
return $hex;
Но тут что-то явно не так. Дело даже не в "хвосте", а в том, что dechex(ord($txt[$i])) даёт один байт, а там явно unicode, байта три, наверное, предположительно что-то вроде "e2, 80, 93" должно быть.

Помогите, я что-то обессилел уже, тупак какой-то.

Да ё-моё, вот и тут уже всё переколбашивается.
второе тире - это &#_8211, а третье - &#_151

hasherfrog
09-04-2009, 14:05
Сделал экспорт через xml, получил что там
<post>1 - тАУ тАФ 1&lt;br&gt;</post>

Тогда новый вопрос.
Как в PHP коде мне обратится к таким символам?
Предположим, мне надо найти, не использовал ли юзер тире.

Как выглядит PHP-код?
Пытался так:
preg_match("$&_151;$"); (без подчёркивания)
Не находит, ну правильно, там же "тАФ" вместо этого?

Что, так и писать
preg_match("$тАФ$");
??? %-(

hasherfrog
09-04-2009, 15:29
Там оказались именно 96 20 97.
В общем, я разобрался.




© OSzone.net 2001-2012