Я хотел бы разбить струны Хургана, которые имеют акценты.
Теперь я использую этот код:
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 символов из всех?
использование Iconv функция, чтобы изменить charset с latin2 на utf-8, а затем сделать mb_substr
,
echo iconv("ISO-8859-2","UTF-8//TRANSLIT", $string);
Теперь я попробовал с этим кодом:
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 для двух символов. Но персонаж é в том положении, в котором он появляется .
Зачем?
Я решаю проблему следующим образом:
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." ...";
}
Спасибо всем, кто помогает!