产品说明中的HTML标记已破裂(Opencart 1.5.5.1)

时间:2013-07-31 11:31:46

标签: php opencart

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

因为描述中的所有文本都以丑陋的方式合并,所以我在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标记内的中断? 或者有更好的方法来处理格式?有关扩展的一些建议可能吗?

提前致谢, 达格玛

1 个答案:

答案 0 :(得分: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;
}

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

效果很好。