0
$variables['slide_one_description'] =  wordwrap(theme_get_setting('slide_one_description','metroman'), 20,"<br>");

在上面,我为滑块描述设置了变量,我只想在一定长度后应用换行符,但上面的代码打印 HTMLbr标记而不是换行符。

注意:描述是动态内容,我想在 Drupal 8 中解决。

4

1 回答 1

0

曾经有诸如 SafeMarkup::checkPlain() 之类的函数执行此功能,但它们已在很大程度上被弃用和删除。大多数时候,Twig 会为您进行文本清理,但有时您只需要在 Drupal 中的 PHP 中删除 HTML 的值。

例如,PHP 有一个 [strip_tags()][1] 函数,它的功能完全符合其名称的含义。

或者,对于 Drupal 更友好的方式,只需通过 at() 函数传递值并使用 @ 替换来强制纯文本。这是它如何工作的示例:

$value = '<p>Here is a <b>value</b> with HTML.<br>Let's remove it.</p>';
$stripped_value = t('@value', ['@value' => $value]);

当然,这是一个简单的示例,但您可以将其应用于其他场景。此外,这只是去掉了 <br> 标签,而不是用换行符替换它们;你需要一个像下面这样的 PHP 函数来用其他东西替换 <br> 标签:

function br2nl($string)
{
  return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}
于 2020-10-30T20:29:49.040 回答