我有一个textarea
用户可以使用tinymce
插入html。
我正在使用html2pdf
库在PDF
中打印该内容。
但是,有时用户会像这样插入无效的HTML,
<p><span>test</p>
因此在打印PDF时会导致错误。
所以我想要的是在打印前检查,如果HTML有效或不是这样,
if(valid_html)
PRINT_PDF
else
strip_tags(PRINT_PDF); // removing tags from sting
为此我也从here尝试了这个解决方案。 但在许多情况下不起作用。我需要解决方案才能允许用户打印pdf。
答案 0 :(得分:1)
解析HTML以确保它是有效的并不是任何语言的简单任务 - 我在这里提请你注意stackoverflow上的两篇特别文章,即"How do you parse and process HTML/XML in PHP?"和"RegEx match open tags except XHTML self-contained tags"
那就是说,我发现你可以使用DOMDocument
做一些基本的解析,但它远非完美 - 但它可能足以达到你的目的。
<?php
$textarea_contents=$_POST['name_of_textarea'];
$buffer = urldecode( $textarea_contents );
$errors = array();
$status=200;
$dom=new DOMDocument();
$dom->validateOnParse = TRUE;
libxml_use_internal_errors( TRUE );
$dom->loadHTML( $buffer );
$results=libxml_get_errors();
$dom=NULL;
libxml_clear_errors();
if( !empty( $results ) && count( $results ) > 0 ){
/* Errors detected, prevent further processing of your pdf */
$status=400;
foreach( $results as $error ){
$errors[]=array(
'message' => $error->message,
'code' => $error->code,
'line' => $error->line,
'level' => $error->level,
'column' => $error->column
);
}
} else {
/* Hopefully the submitted data validated OK - create PDF */
}
?>