Как я могу разбить строку с акцентами в PHP?

Я хотел бы разбить струны Хургана, которые имеют акценты.
Теперь я использую этот код:

if(strlen($row['title'])<=20)
{
echo $row['title'];
}
else
{
echo substr($row['title'], 0, 17)." ...";
}

Я храню эти данные с кодировкой latin2_hungarian_ci в базе данных и использую charset в файлах php. Как в PHP, так и в HTML-части:

header('Content-Type: text/html; charset=utf-8');

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Но с этим способом, если последний символ — не английский символ (é, á, ö, ü, ó, ő, ú, ű, í), это не кажется хорошим. Против этого персонажа появляется символ .
Если я не использую substr, просто напиши всю эту фразу, все будет хорошо.

Теперь, например:
Végzet erekly … или Északi széless …

Я не могу понять эту подстроку, потому что в моих примерах из одного из них пишут 15 символов и этот символ, из другого 16 символов и этот символ.

Как я могу выписать первые x символов из всех?

0

Решение

использование Iconv функция, чтобы изменить charset с latin2 на utf-8, а затем сделать mb_substr,

echo iconv("ISO-8859-2","UTF-8//TRANSLIT", $string);
1

Другие решения

Теперь я попробовал с этим кодом:

function charfunction($myStr,$limit=17) {
$result = "";
for($i=0; $i<$limit; $i++) {
$result .= $myStr[$i];
}
return $result;
}

И выпиши:

echo charfunction($row['title'])." ...";

Полный заголовок в $row['title'] это вегетарианская эрекция — Чонтварош

Если я использую $limit=17 это пишет Végzet erekly …

Если я изменю на $limit=18 это пишет Végzet ereklyé …

Считает символ for для двух символов. Но персонаж é в том положении, в котором он появляется .
Зачем?

0

Я решаю проблему следующим образом:

if(strlen($row['title'])<=20)
{
echo $row['title'];
}
else
{
$result = "";
$alphas = range('A', 'Z');
$last = substr($row['title'], 15, 16);
$title = $row['title'];
if($alphas != "%".$last."%")
{
for($i=0; $i<18; $i++) {
$result .= $title[$i];
}

}
else
{
for($i=0; $i<17; $i++) {
$result .= $title[$i];
}
}
echo $result." ...";
}

Спасибо всем, кто помогает!

0
По вопросам рекламы [email protected]