0

我在类别页面上的产品描述方面遇到了一些问题,希望能得到一些提示。

因为描述中的所有文本都以一种丑陋的方式合并,所以我在 catalog/controller/product/category.php(以及 specials.php 和 search.php)中进行了一些更改以包含 HTML 标记:

'description' => utf8_substr(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'), 0, 100) . '..',

代替

'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',

起初,一切都如我所愿。但在一种情况下,指定的字符限制恰好发生在 HTML 标记内,这会导致整个布局崩溃。描述以“</”结尾

当然,在更改文本长度时一切都很好,但我几乎不能要求我的客户计算字符数。

是否可以防止 HTML 标签中的中断?还是有更好的方法来处理格式?一些关于扩展的建议可能吗?

提前致谢, 达格玛

4

1 回答 1

0

我将以下方法放在我的 Url 类中,然后通过以下方式调用它:

$this->url->truncate($description, 150);

// truncate method
public function truncate ($string, $limit = 145, $break = ".", $pad = ".") {
    // return with no change if string is shorter than $limit
    if (strlen ($string) <= $limit) return $string;

    // is $break present between $limit and the end of the string?
    if (false !== ($breakpoint = strpos($string, $break, $limit))):
        if ($breakpoint < strlen($string) - 1):
            $string = substr($string, 0, $breakpoint) . $pad;
        endif;
    endif;

    return $string;
}

它只会在设定的限制后一段时间后中断。

效果很好。

于 2013-08-14T14:22:13.450 回答