Short_title character problem

I am using this code to shorting the title:

function short_title( $after = '', $length ) {
    $mytitle = get_the_title();
    if( strlen( $mytitle ) > $length ) {
        $mytitle = substr( $mytitle, 0, $length );
        echo $mytitle . $after;
    } else echo $mytitle;
}

and i call it with:

Read More
<?php short_title( '...', 40 ); ?> 

The script works fine but i am having character problem. See the picture. Any idea how to solve it?

Related posts

Leave a Reply

2 comments

  1. as the word is broken at the end, this problem is very likely. you can use the following snippet instead which will finish at word boundary

    function short_title($after = '', $length)
    {
      $mytitle = get_the_title();
      if (strlen($mytitle) > $length) {
        $mytitle = substr($mytitle, 0, $length);
        $i = strrpos($mytitle, " ");
        $mytitle = substr($mytitle, 0, $i);
        echo $mytitle . $after;
      } else {
        echo $mytitle;
      }
    }
    
    short_title( '...', 40 );
    

    ref: http://code.web-max.ca/truncate_string.php

    however, if you have/use multibyte support, probably it’s better idea to use mb_strlen() & mb_substr(), mb_strpos() rather than strlen(), substr(), mb_strpos() function.