Прежде всего - я начинающий php. Я пытаюсь ограничить длину заголовков в теме WordPress с помощью mb_substr, но он возвращает меньше символов, когда в названии есть определенные символы, такие как «» (апостраф) или «-» (тире).
Вот код, с которым я работаю, общее количество символов до 60 (игнорируйте не-многоточие):
<?php
$short_title = the_title('','',false);
$short_title_2 = mb_substr($short_title,0,60, 'utf-8');?>
<h3>
<a href="<?php the_permalink(); ?>">
<?php echo $short_title_2; if($short_title_2!=$short_title) { echo "..."; }; ?>
</a>
</h3>
Так что, в принципе, я не хочу возвращать заголовок, усеченный до 60 символов, но когда у меня есть знаки препинания или другие специальные символы, он считает их как отдельные 6 символов (должно считаться значение Юникода или что-то в этом роде?) это означает, что он на самом деле вернет только 54 символа.
Вот пример и заголовок с черточкой:
Competition - Win Tees from Listen To Your Eyes Clothing Now Ended
Код должен возвращаться:
<h3>Competition - Win Tees from Listen To Your Eyes Clothing Now…</h3>
Что он на самом деле возвращает:
<h3>Competition – Win Tees from Listen To Your Eyes Clothi…</h3>
Кодировка базы данных установлена в utf8_general_ci (включая таблицу для заголовка)
Есть ли способ, которым я могу преодолеть это?