我正在使用Masterminds / html5-php(https://github.com/Masterminds/html5-php/)来修改HTML输出的内容。
不幸的是,处理后删除了vue-js属性@submit.prevent="save | valid"
:
原始
<form id="formmaker-form" class="uk-form {{ formitem.data.formStyle }} {{ formitem.data.classSfx }}"
v-validator="form" @submit.prevent="save | valid" v-cloak>
</form>
加工:
<form id="formmaker-form" class="uk-form {{ formitem.data.formStyle }} {{ formitem.data.classSfx }}" v-validator="form" v-cloak>
</form>
我的代码:
public function __construct(HTML5 $htmlParser = null)
{
$this->htmlParser = $htmlParser ?: new HTML5();
}
public function fix($markup, $topLevel = 1, $depth = 6)
{
if ( ! $this->isFullHtmlDocument($markup)) {
$partialID = 'toc_generator_' . mt_rand(1000, 4000);
$markup = sprintf("<body id='%s'>%s</body>", $partialID, $markup);
}
$domDocument = $this->htmlParser->loadHTML($markup);
$domDocument->preserveWhiteSpace = true; // do not clobber whitespace
$sluggifier = new UniqueSluggifier();
/** @var \DOMElement $node */
foreach ($this->traverseHeaderTags($domDocument, $topLevel, $depth) as $node) {
if ($node->getAttribute('id')) {
continue;
}
$node->setAttribute('id', $sluggifier->slugify($node->getAttribute('title') ?: $node->textContent));
}
return $this->htmlParser->saveHTML((isset($partialID)) ? $domDocument->getElementById($partialID)->childNodes : $domDocument);
}
由于我不能使用另一个类(html5-php是我使用的依赖项的一部分),我必须继续使用它。
知道如何解决这个问题吗?
答案 0 :(得分:0)
您可以将有问题的属性替换为某个安全名称,并在所有内容后将其反转。
public function fix($markup, $topLevel = 1, $depth = 6) {
$markup = str_replace('@submit.prevent', md5('@submit.prevent'), $markup);
// do your magic
return str_replace(md5('@submit.prevent'), '@submit.prevent', $markup);
}