You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Dompdf转换PHP/HTML表单为PDF时出现语法错误求助

错误原因与修复方案

错误根源

你遇到的语法错误来自两个核心问题:

  1. 单引号字符串语法冲突:传给loadHtml()的单引号字符串里,$_POST['servproname']中的单引号会提前闭合外层字符串,导致PHP解析逻辑混乱。
  2. PHP代码无法嵌入字符串执行:你把for循环直接写在HTML字符串中,PHP不会执行这段循环,只会把它当作普通文本输出,同时还引发语法错误。

修复后的代码

<?php
namespace Dompdf;
require_once 'dompdf/autoload.inc.php';

if(isset($_POST['submit']))
{
    $dompdf = new Dompdf(); 
    // 初始化基础HTML结构
    $html = '<html>
              <table>';
    // 单独处理循环,逐行拼接表格内容
    if(isset($_POST['servproname']) && is_array($_POST['servproname'])){
        $itemCount = count($_POST['servproname']);
        for ($i=0; $i < $itemCount; $i++) { 
            $html .= '<tr>
                       <td style=\'text-align:left; border:1px solid #cccccc;\'>' . $_POST['servproname'][$i] . '</td>   
                       <td style=\'text-align:left; border:1px solid #cccccc;\'>' . $_POST['docname'][$i] . '</td>
                       <td style=\'text-align:center; border:1px solid #cccccc;\'>' . $_POST['price1'][$i] . '</td>
                       <td style=\'text-align:center; border:1px solid #cccccc;\'>' . $_POST['qty'][$i] . '</td>
                       <td style=\'text-align:center; border:1px solid #cccccc;\'>' . $_POST['tot4'][$i] . '</td>
                     </tr>';
        }
    }
    // 闭合HTML标签
    $html .= '</table></html>';
    // 加载拼接完成的HTML内容
    $dompdf->loadHtml($html);
    $dompdf->setPaper('A4', 'landscape');
    $dompdf->render();
    $dompdf->stream("",array("Attachment" => false));
    exit(0);
}
?>

关键修改说明

  • 将HTML内容拆分为变量拼接,单独执行PHP循环,彻底避免代码嵌入字符串引发的语法问题。
  • 增加了数组存在性和类型判断,防止count()函数在非数组参数上抛出错误。
  • 把样式中的双引号替换为单引号,避免和外层字符串的引号冲突,也可以用\"转义双引号替代。

内容的提问来源于stack exchange,提问作者Moon Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:52:43