[英]Fixing HTML spacing issues from nested PHP
這一直困擾着我的PHP,我從來沒有找到答案。 希望這個例子能夠提供足夠的信息來理解我的問題,因為我不知道如何用文字徹底解釋它。
這里是HTML中的一些PHP,在.php文件中。 這類事情經常發生:
<html>
<head>
<!-- whatever -->
</head>
<body>
<section id="content">
<ul class="errors">
<?php
foreach ($errors as $error)
{
?>
<li><?= $error ?></li>
<?php
}
?>
我忽略了HTML的結束標記,並使用<?=
快捷方式來避免任何不必要的文本。
現在,這是HTML輸出中的預期 (即,右鍵單擊 - >查看源):
<html>
<head>
<!-- whatever -->
</head>
<body>
<section id="content">
<ul class="errors">
<li>Example Error</li>
但是,這是實際結果:
<html>
<head>
<!-- whatever -->
</head>
<body>
<section id="content">
<ul class="errors">
<li>Example Error</li>
為什么? 因為來自PHP的foreach
循環縮進了3個選項卡,所以它生成的<li>
獲得了一個附加的3個選項卡。 我一直在使用的解決方案? 這里:
<html>
<head>
<!-- whatever -->
</head>
<body>
<section id="content">
<ul class="errors">
<?php
foreach ($errors as $error)
{
?>
<li><?= $error ?></li>
<?php
}
?>
當然,這是有效的 - 但男人是丑陋的! 看起來我有兩個選擇:讓我的HTML輸出難看,我的代碼可讀或使我的HTML可讀,我的代碼很難看。 為什么我不能同時擁有? 沒有其他辦法嗎?
我想,最好的辦法是使代碼可讀,輸出難看。 誰檢查源代碼呢? 我知道這可能是最受歡迎的反應。 丑陋的HTML源代碼讓我感到煩惱,我希望有一種解決方法,而不會犧牲PHP代碼的可讀性。
php代碼不會在頁面上生成任何縮進。 產生縮進的是縮進
<li> line</li>
你能做的是:使用echo輸出它
<?php
foreach ($errors as $error)
{
echo "<li>$error</li>";
}
?>
或者你可以這樣做:
<?php
foreach ($errors as $error)
{?>
<li><?=$error?></li> /(indent it in the begining as much as you want in the markup)
<?}
?>
雖然,imo,你不必擔心標記的外觀。 這並不重要。 縮進對輸出沒有影響
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.