FPDF - PHP внутри функции WriteHTML? - PullRequest
3 голосов
/ 28 февраля 2012

Я вставил некоторый текст в функцию WriteHTML, предоставленную http://www.fpdf.org/ в разделе «Учебное пособие 6: Ссылки и текущий текст».

Я хочу добавить в него некоторый 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();

Есть идеи?Есть ли какая-либо функция в существовании, которая может заставить эту работу?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Поскольку все игнорируют мои комментарии, я отправлю свой ответ:

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>";
2 голосов
/ 28 февраля 2012

Всегда согласовывайтесь с использованием кавычек. Если вы открываете с одинарной кавычкой, закрываете с одинарной кавычкой, а если вы открываете с двойной кавычкой, закрывайте с двойной кавычкой. Измените код на следующий, и он должен работать.

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();
1 голос
/ 28 февраля 2012

Если вы измените настройку переменной $html на следующую, ваш код должен работать правильно:

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

В вашем примере вы неправильно смешивали одинарные и двойные кавычки.

Другой вариант - использовать двойные кавычки, что позволяет анализировать переменные внутри кавычек.

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