我正好有這個問題,但由於strip_tags
是不夠的,保護的屬性變量值,我將提交我的答案。
我使用HTML Purifier刪除所有不需要的HTML元素和屬性。打開命令控制檯並執行以下命令進行安裝。
$ composer require ezyang/htmlpurifier "^4.6"
然後你就可以創建自己的枝條延伸:
namespace AcmeBundle\Twig;
class HTMLPurifierExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('html_purifier', array($this, 'purify'), array('is_safe' => array('html'))),
);
}
public function purify($text)
{
$elements = array(
'p',
'br',
'small',
'strong', 'b',
'em', 'i',
'strike',
'sub', 'sup',
'ins', 'del',
'ol', 'ul', 'li',
'h1', 'h2', 'h3',
'dl', 'dd', 'dt',
'pre', 'code', 'samp', 'kbd',
'q', 'blockquote', 'abbr', 'cite',
'table', 'thead', 'tbody', 'th', 'tr', 'td',
'a[href|target|rel|id]',
'img[src|title|alt|width|height|style]'
);
$config = \HTMLPurifier_Config::createDefault();
$config->set('HTML.Allowed', implode(',', $elements));
$purifier = new \HTMLPurifier($config);
return $purifier->purify($text);
}
public function getName()
{
return 'html_purifier';
}
}
打開services.yml
和註冊擴展爲一個服務:
services:
acme.html_purifier_extension:
class: AcmeBundle\Twig\HTMLPurifierExtension
public: false
tags:
- { name: twig.extension }
現在你可以用
{{ post.content|markdown|html_purifier }}
使用
所以要確認具體盟友,'{{post.content | escape('html')| markdown}}'不起作用?編輯:啊,你想讓某些HTML通過 – sjagr 2014-10-08 20:25:09
沒有,因爲它轉義的'&'和我的輸出是'<腳本>警報(「」)< /腳本>' – 2014-10-08 20:28:06