在php问题中解析html

时间:2013-04-20 10:15:10

标签: php html tcpdf

我正在为tcpdf编写html代码。我的描述保存在带有html标签的mysql中。我可以在php中读取它。例如:

$description = "Brand new!!! <br /><br /><br />Huge size";
$html = '<div>'. $description.'</div>';
$pdf->writeHTML($html, true, false, true, false, '');

它显示了描述。我需要实现html标签(三次来到新行)

我试过但没有运气

$description  = htmlspecialchars($rw['description_demo']);

输出应该像

  全新的!!!   巨大的尺寸

当我使用echo $html时,它也会给我同样的问题。

3 个答案:

答案 0 :(得分:0)

而不是使用<br>尝试以下代码,如果它对您有帮助

$pdf->InsertText("Line one\n\nLine two");

或者如果你想删除html标签

$string = 'A string with <br/> & "double quotes".';
$string = str_replace(array('<br/>', '&', '"'), ' ', $string);
echo $string;

答案 1 :(得分:0)

我不确定当前版本的TCPDF,但大多数HTML到PDF库都实现了自己的HTML解析器,而且他们经常无法识别相当常见的标签。特别是,我个人使用的库不接受<br />这样的自闭标签。我建议你试试<br>

如果HTML代码是由第三方工具生成的,那么简单的str_replace('<br />', '<br>', $html)可能是一个快速而又脏的修复。

编辑:显然,我们现在正在讨论替换所有不支持的标记。这是一项重大任务。您需要使用DOMDocument或您选择的解析器 - 基于强制字符串的HTML操作可能迟早会触发无效结果。

其他替代方法是切换到具有更好HTML支持的PDF工具,例如wkhtmltopdf(需要安装的命令行程序)或mPDF(PHP库)。

答案 2 :(得分:0)

尝试更改&lt; br /&gt;到&lt; br /&gt;:

$description = "Brand new!!! <br /><br /><br />Huge size";
$html = '<div>.' $description'.</div>';
$pdf->writeHTML(str_replace('<br />', '<br/>', $html), true, false, true, false, '');

但请记住,tcpdf对html标签的支持有限。

如果你想从html生成pdf我建议使用wkhtmltopdf - 它使用webkit渲染引擎,所以你应该没有问题用你的描述生成pdf。