2012-02-27 105 views
2

我在“教程6:链接和流动文本”下的http://www.fpdf.org/提供的WriteHTML函数中插入了一些文本。FPDF - PHP里面的WriteHTML函数?

我想在里面添加一些php代码,但它不起作用。

我尝试了以下,但它只是写了代码。

while ($row = mysql_fetch_array($result)) { 

$html='Person:<b>".$row["firstname"] ." ". $row["lastname"]."</b>'; 

$pdf->AddPage();  
$pdf->SetXY(12, 127); 
$pdf->SetFontSize(11); 
$pdf->WriteHTML(utf8_decode($html)); 
} $pdf->Output(); 

任何想法?有什么功能可以使这项工作?

+0

发生什么事,你能指望什么发生? – Resorath 2012-02-27 21:38:44

回答

2

始终与使用引号一致。如果您打开单引号,请用单引号结尾,如果用双引号开头,请用双引号结尾。将代码更改为以下,它应该工作。

while ($row = mysql_fetch_array($result)) { 

$html="Person:<b>".htmlspecialchars($row["firstname"])." ".htmlspecialchars($row["lastname"])."</b>"; 

$pdf->AddPage();  
$pdf->SetXY(12, 127); 
$pdf->SetFontSize(11); 
$pdf->WriteHTML(utf8_decode($html)); 
} $pdf->Output(); 
+0

打败我几秒!请注意,他还希望在'$ row'变量周围使用'htmlspecialchars()'。 – Josh 2012-02-27 21:38:39

+1

@Josh修正它使用'htmlspecialchars' – enderskill 2012-02-27 21:39:32

1

如果您改变$html变量下面的设置,您的代码应能正常工作:

$html = 'Person:<b>' . $row['firstname'] . ' ' . $row['lastname'] . '</b>'; 

你在你的例子正确混合单引号和双引号。

另一种选择是使用双引号,它允许在引号内解析变量。

$html = "Person:<b> {$row['firstname']} {$row['lastname']} </b>"; 
+0

现在推荐使用'htmlspecialchars' ... – Josh 2012-02-27 21:46:51

2

既然每个人都无视我的意见,我会提出我自己的答案:

while ($row = mysql_fetch_array($result)) { 
    $html="Person:<b>".htmlspecialchars($row["firstname"])." ". 
     htmlspecialchars($row["lastname"])."</b>"; 

    $pdf->AddPage();  
    $pdf->SetXY(12, 127); 
    $pdf->SetFontSize(11); 
    $pdf->WriteHTML(utf8_decode($html)); 
} 
$pdf->Output(); 

使用htmlspecialchars确保像O'Donnel,或者更糟糕,Mallory<evil code here>名称不会产生无效/危险的HTML。

注意,究竟是什么解决您的问题是不匹配的报价:

$html='Person:<b>".$row["firstname"] ." ". $row["lastname"]."</b>'; 

诗句:

$html="Person:<b>".$row["firstname"] ." ". $row["lastname"]."</b>";