我有一个问题,我正在使用的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;">»</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;">»</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)
如果你想要一个更好的(字数限制)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)
如果您使用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)
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |