我在类别页面上遇到了产品描述方面的一些问题,并希望得到一些提示。
因为描述中的所有文本都以丑陋的方式合并,所以我在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标记内的中断? 或者有更好的方法来处理格式?有关扩展的一些建议可能吗?
提前致谢, 达格玛
答案 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;
}
只有在设定限制之后的一段时间后它才会中断。
效果很好。