如何在PHP中缩短非常长的字符串

Ody*_*3us 1 php wordpress

我有一个问题,我正在使用的PHP面包屑功能,当页面名称很长时,它溢出开箱即用,然后看起来真的很难看.

我的问题是,我怎样才能实现这一点:"这是一个很长的字符串"到"这是......"用PHP?

关于如何处理这个问题的任何其他想法也将受到赞赏,而不是提前!

这是面包屑功能:

function breadcrumbs() {
 // Breadcrumb navigation
    if (is_page() && !is_front_page() || is_single() || is_category()) {
        echo '<ul class="breadcrumbs">';
        echo '<li class="front_page"><a href="'.get_bloginfo('url').'">'.get_bloginfo('name').'</a> <span style="color: #FFF;">&raquo;</span> </li>';

        if (is_page()) {
            $ancestors = get_post_ancestors($post);

            if ($ancestors) {
                $ancestors = array_reverse($ancestors);

                foreach ($ancestors as $crumb) {
                    echo '<li><a href="'.get_permalink($crumb).'">'.get_the_title($crumb).'</a> <span style="color: #FFF;">&raquo;</span> </li>';
                }
            }
        }

        if (is_single()) {
            $category = get_the_category();
            echo '<li><a href="'.get_category_link($category[0]->cat_ID).'">'.$category[0]->cat_name.'</a></li>';
        }

        if (is_category()) {
            $category = get_the_category();
            echo '<li>'.$category[0]->cat_name.'</li>';
        }

        // Current page
        if (is_page() || is_single()) {
            echo '<li class="current">'.get_the_title().'</li>';
        }
        echo '</ul>';
    } elseif (is_front_page()) {
        // Front page
        echo '<ul class="breadcrumbs">';
        echo '<li class="front_page"><a href="'.get_bloginfo('url').'">'.get_bloginfo('name').'</a></li>';
        echo '<li class="current">Home Page</li>';
        echo '</ul>';
    }
}
Run Code Online (Sandbox Code Playgroud)

sew*_*ewa 5

如果你想要一个更好的(字数限制)trucation,你可以使用explode空格分割字符串然后追加每个单词(数组条目),直到你达到你的最大限制

就像是:

define("MAX_LEN", 15);
$sentance = "Hello this is a long sentance";
$words = explode(' ', $sentance);
$newStr = "";
foreach($words as $word) {
  if(strlen($newStr." ".$word) >= MAX_LEN) {
     break;
  }
  $newStr = $newStr." ".$word;
}
Run Code Online (Sandbox Code Playgroud)


Max*_*Max 5

如果您使用UTF-8作为字符集,我建议使用该mb_strimwidth方法,因为它是多字节安全的并且不会弄乱多字节字符.它还会...自动附加占位符字符串,您substr必须在附加步骤中执行此操作.

使用范例:

echo mb_strimwidth("Hello World", 0, 10, "...", "UTF-8"); // .. or some other charset
// outputs Hello W...
Run Code Online (Sandbox Code Playgroud)