Проблема с подпрограммой PHP Substr

Я использую ниже код для подбора заголовков и покажу его в недавнем разделе сообщений в своем блоге :

<?php global $post; $releaseDate = get_post_meta($post->ID, "gosterim_tarihi", true); foreach( $images as $image ) { $title = get_the_title(); if (strlen($title) > 20) { $title = substr($title, 0, 20) . '&hellip;'; } $attachmentimage=wp_get_attachment_image_src( $image->ID, 'large' ); echo '<li><a href="'. get_permalink() .'" title="' . $title . '"><img src="'. $attachmentimage[0] .'" alt="'. $title .'" />'. $title .'<span>Gösterim Tarihi: ' . $releaseDate . '</span></a></li>'; } ?> 

Но есть проблемы с объектами символов HTML. Когда я использую функцию substr для обрезки заголовка, функция substr элементы HTML-символов.

Поэтому я попытался использовать функцию html_entity_decode но я не могу сделать это очень хорошо.

Кто-нибудь может мне помочь?

Попробуй это:

 $output = htmlentities(substr(html_entity_decode($input), 0, 20)); 

Это будет декодировать все сущности, поэтому substr ничего не сломает. После этого вы можете закодировать все символы обратно на свои объекты.

Я думаю, вы можете использовать функцию strip_tags, например:

 substr(strip_tags($title), 0, 20); 

Это касается только заголовка, исключая любые html-символы.

Использовать эту функцию

 <?php function keephtml($string){ $res = htmlentities($string); $res = str_replace("&lt;","<",$res); $res = str_replace("&gt;",">",$res); $res = str_replace("&quot;",'"',$res); $res = str_replace("&amp;",'&',$res); return $res; } ?> 

Было бы более чистым, если вы можете оставить html-кодирование до последней минуты, например, когда вы действительно эхо-строку $ title. Конечно, это означает, что вы должны помнить, что сами кодируете все строки.