2012-02-27 58 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>";