Обрезание строки Unicode

Кром

Новичок
Обрезание строки Unicode

Мне нужно обрезать строку в формате Unicode,
PHP:
echo substr($text,0,400)."...";
но при этом символы могут обрезаться посередине, из-за чего последний символ получается нераспознанным. Как сделать обрезание правильно?
 

Кром

Новичок
Это не подходит, так как я сам не понял, в каком формате у меня строка. А она вида " & # 1086; ". Т.е. это не настоящий Unicode...
 

Кром

Новичок
Если кому интересно, вот решение (коллега подсказал).
PHP:
function substr_u($text, $sub_len)
{
	$rv = "";
	$cut_len = 0;
	$len = strlen($text);
	$pos = 0;
	while($cut_len < $sub_len)
	{
		switch($text[$pos])
		{
			case "&":
				$tmp = substr($text, $pos);
				if (($elem = strpos($tmp, ";")) == false)
				{
					$rv .= "&amp;";
				}
				else
				{
					$rv .= substr($tmp, 0, $elem + 1);
					$pos += $elem;
				}
				break;
			
			default:
				$rv .= $text[$pos];
				break;
		}
		$pos++;
		$cut_len++;
	}
	return $rv;
}
 
Сверху