2012-02-27 3 views
2

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

ответ

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

Ударьте меня на несколько секунд! Обратите внимание, что он также захочет использовать 'htmlspecialchars()' вокруг переменных '$ row'. – Josh

+1

@Josh Исправлено использование 'htmlspecialchars' – enderskill

1

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

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

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

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

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

Теперь, когда рекомендуется использовать' htmlspecialchars' ... – Josh

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>"; 
Смежные вопросы