<?php
$s = 'test тест test'; // UTF-8
$s = iconv('utf-8', 'windows-1251', $s);
function truncate($s)
{
$pattern = '/^(?:[\x09\x0A\x0D\x20-\x7E]'
. '|[\xC2-\xDF][\x80-\xBF]'
. '|\xE0[\xA0-\xBF][\x80-\xBF]'
. '|\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'
. '|\xED[\x80-\x9F][\x80-\xBF]'
. '|\xF0[\x90-\xBF][\x80-\xBF]{2}'
. '|[\xF1-\xF3][\x80-\xBF]{3}'
. '|\xF4[\x80-\x8F][\x80-\xBF]{2}'
. ')*/';
preg_match($pattern, $s, $m);
return $m[0];
}
mysql_connect('localhost', 'root', 'root');
mysql_select_db('test');
mysql_set_charset('utf8');
mysql_query(sprintf('INSERT INTO `table` (`name`) VALUES ("%s")', mysql_escape_string($s)));
$res = mysql_query(sprintf('SELECT MD5(`name`) FROM `table` WHERE `id` = %d', mysql_insert_id()));
$hash = mysql_result($res, 0);
$substr = truncate($s);
var_dump($substr, $hash, md5($substr), strtolower($hash) === md5($substr));