原來Parsedown庫中有一個選項,以逃避HTML:
echo Parsedown::instance()
->setMarkupEscaped(true) # escapes markup (HTML)
->text("<div><strong>*Some text*</strong></div>");
# Output:
# <p><div><strong><em>Some text</em></strong></div></p>
從Parsedown Tutorial: Get Started
據推測,因爲parsedown-laravel是隻是一個包裝,你應該能夠訪問選項。
顯然,這將禁用所有標記而不是特定的標記。
的GitHub上issue 229 - Disable parsing of specific elements在Parsedown錯誤追蹤用戶moldcraft提供following code,這可能鋪平道路的解決方案:
moldcraft評論2月24日•2015-02-24 18時41分31秒+0100
可能對某人有用:我也使用Parsedown進行用戶評論,我想用h4替換所有h1,h2,h3以防止SEO警告(例如,只有一個h1必須在頁面上),這裏是我的Symfony2服務
<?php
namespace App\MainBundle\Service;
use Parsedown;
use HTMLPurifier;
use Emojione\Emojione;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Markdown extends Parsedown
{
/**
* @var HTMLPurifier
*/
private $purifier;
public function __construct(ContainerInterface $container)
{
$this->setMarkupEscaped(true);
{
$purifierConfig = array(
'HTML.ForbiddenElements' => array('h1', 'h2', 'h3'),
'HTML.ForbiddenAttributes' => array('style', 'onclick',),
'HTML.TargetBlank' => true,
);
$this->purifier = new HTMLPurifier($purifierConfig);
}
{
Emojione::$imageType = 'svg';
Emojione::$sprites = true;
Emojione::$imagePathSVGSprites = $container->get('templating.helper.assets')->getUrl(
'bundles/appmain/emojione/sprites/emojione.sprites.svg'
);
Emojione::$ascii = true;
}
}
function text($raw)
{
return Emojione::shortnameToImage(
$this->purifier->purify(
parent::text($raw)
)
);
}
private function safeHeader($Block)
{
if ($Block && isset($Block['element'])) {
/**
* Change h1, h2, h3 to h4
*/
if (in_array($Block['element']['name'], array('h1', 'h2', 'h3'))) {
$Block['element']['name'] = 'h4';
}
}
return $Block;
}
protected function blockHeader($Line)
{
return $this->safeHeader(
parent::blockHeader($Line)
);
}
protected function blockSetextHeader($Line, array $Block = null)
{
return $this->safeHeader(
parent::blockSetextHeader($Line, $Block)
);
}
}
這可能是相關的:https://github.com/erusev/parsedown/issues/229 – spenibus