我有一个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
为此,我也从这里尝试了这个解决方案。但在很多情况下不起作用。我需要这个解决方案,允许用户打印pdf。
解析HTML以确保其有效性在任何语言中都不是一项容易的任务-我提请您注意stackerflow上的两篇文章,即"如何在PHP中解析和处理HTML/XML?"answers"RegEx匹配除XHTML自包含标记外的开放标记"
也就是说,我发现您可以使用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 */
}
?>