0

私はこのコードを持っています:

<? if(is_home() || is_archive()): ?>
<ul>
  <li><a href="<?= site_url('/category/one') ?>">One</a></li>
  <li><a href="<?= site_url('/category/two') ?>">Two</a></li>
  <li><a href="<?= site_url('/category/three') ?>">Three</a></li>
</ul>
<? endif ?>

次の出力が生成されます。

  <ul>
  <li><a href="http://domain/...">One</a></li>
  <li><a href="http://domain/...">Two</a></li>
  <li><a href="http://domain/...">Three</a></li>
</ul>

<ul>インデントされていることに注意してください。次を使用すると、期待どおりに出力されます。

<? if(is_home() || is_archive()): ?><ul>
...

これは些細なことですが、これを行う方法があるかどうか知りたいので、PHP と HMTL の両方で見栄えがよくなります。私はきれいな出力が好きです。

4

2 に答える 2

4

わかった。PHP は、終了トークンの後に1 つの改行 (\nまたは) を消費します。http://php.net/manual/en/language.basic-syntax.instruction-separation.php で述べたように\r\n?>

[...] ブロックの終了タグには、改行が存在する場合、直後に改行が含まれます。

そこのコメントにも1つの回避策が記載されています。の後にスペースを追加した場合?>、つまり のシーケンスを意味する場合? > SPACE \n、改行はその目的を保持します。-- しかし、その場合、目的の効果を得るために別の目に見えないキャラクターに依存することになります。

于 2013-02-13T05:52:24.753 に答える
2

まず、HTML のフォーマットがぎこちなくても、なぜ気にするのでしょうか。おそらく読みやすさの目的で理解していますが、利用可能なhtmlフォーマットツールがあります:例http://www.freeformatter.com/html-formatter.html

HTML コードが有効かどうか心配な場合は、適切な IDE または HTML バリデーターを使用してみてください: http://validator.w3.org/など

最後に、質問への回答: コードの先頭を次のように変更します。

<?php if(is_home() || is_archive()){ echo "\n" ?><ul>
  <li><a href="<
...
<?php }?>
于 2013-02-13T05:39:20.443 に答える