2014-05-07 54 views
0

我想回顯我的數據庫中的所有學生的電子郵件列表,但$email變量不回顯,除非我從下面的代碼中刪除<>。它試圖讀取$email作爲HTML或其他東西?我會如何正確地做到這一點?PHP變量不回顯,如果包裹在< >

$students = $users->student_list($item); 

foreach ($students as $student) { 
    $email  = $student['payer_email']; 
    $first  = $student['first_name']; 
    $last = $student['last_name']; 
    echo "$first $last <$email>, "; 
} 

回答

1

echo "$first $last <$email>, ";可能回聲<[email protected]>其瀏覽器認爲作爲一個標籤,並試圖解析它(你可以查看頁面來源來驗證)。你應該使用以下避免此問題

echo "$first $last &lt;$email&gt;, "; 

或使用以下

echo htmlentities("$first $last <$email>, "); 

PHP會自動轉換< >

2

的Web瀏覽器考慮< & >作爲起點和終點定義的標籤。您的代碼生成<[email protected]>,瀏覽器認爲這是一個標籤。您必須使用HTML實體:

echo "$first $last &lt;$email&gt;, "; 
2

它被解釋爲HTML標記,是的。你最安全的賭注(用於電子郵件和name)是顯示他們之前進行編碼與htmlspecialchars()字符串:

$email  = htmlspecialchars("<" . $student['payer_email'] . ">"); 
$first  = htmlspecialchars($student['first_name']); 
$last  = htmlspecialchars($student['last_name']); 
echo "$first $last $email, "; 
相關問題