PHP Substr Function Trimming Problem [duplicate]

你说的曾经没有我的故事 提交于 2019-12-11 08:25:40

问题


I'm using below code for triming titles and show it recent posts section on my blog:

<?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>';
} ?>

But there are problem with HTML character entities. When i use substr function for trim a title, substr function trimming HTML character entities too.

So i tried to use html_entity_decode function but i can't do it very well.

Anyone can help me?


回答1:


Try this:

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

This will decode all entities so substr won't break anything. After that you can encode all characters back to their entities.




回答2:


I think you can use the strip_tags function there eg:

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

This will deal only with the title excluding any html chars.




回答3:


Use This Function

<?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;
}
?>



回答4:


It would be cleaner if you can leave the html-encoding until the last minute, e.g. when you actually echo the $title string. Of course, that means you have to remember to encode all the strings yourself.



来源:https://stackoverflow.com/questions/2124209/php-substr-function-trimming-problem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!