0

コードを読みやすくするために、、、および行を<?php if (statement): ?>使用<?php else if (statement): ?>したいと思います。<?php else: ?>これが正しい構文であるかどうかはよくわかりません。また、これらのifブロック内でphpコードを使用できるかどうかも疑問に思います。これは私が取り組んでいるものです:

<?php $blogexcerpt = $Blog->create_excerpt(html_entity_decode($post->content), 0, 250); ?>
<!-- if the blogexcerpt contains less than 5 non-white spaces assume there is media and use the "View Media" tag -->
<?php if ( strlen(preg_replace( '/\s+/', ' ', $blogexcerpt)) < 5 ): ?>
<h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">View Media…&lt;/a></h5>
<!-- else if the blog post is less than excerpt length post entire -->
<?php else if ( strlen($Blog->create_excerpt(html_entity_decode($post->content), 0, 255)) < 250 ): ?>
<?php echo $blogexcerpt; ?>
<h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">View post</a></h5>
<!-- else show excerpt -->
<?php else: ?>
<?php echo $blogexcerpt; ?><span style="display: inline;">…&lt;/span>
<h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">Read more…&lt;/a></h5>
<?php endif>
4

3 に答える 3

4

この特定のケースでは、すべての PHP を読み取り可能にします。

<?php
$blogexcerpt = $Blog->create_excerpt(html_entity_decode($post->content), 0, 250);

if ( strlen(preg_replace( '/\s+/', ' ', $blogexcerpt)) < 5 ) {
    echo '<h5 style="margin:0px;"><a href="' . $Blog->get_blog_url('post').$post->slug; . '" class="blog_post_link">View Media…&lt;/a></h5>';
} else if ( strlen($Blog->create_excerpt(html_entity_decode($post->content), 0, 255)) < 250 ) {
    echo $blogexcerpt;
    echo '<h5 style="margin:0px;"><a href="' . $Blog->get_blog_url('post').$post->slug; . '" class="blog_post_link">View post</a></h5>';
} else {
    echo $blogexcerpt;
    echo '<span style="display: inline;">…&lt;/span>';
    echo '<h5 style="margin:0px;"><a href="' . $Blog->get_blog_url('post').$post->slug; . '" class="blog_post_link">Read more…&lt;/a></h5>';
}

これは単なる個人的な好みかもしれませんが、これははるかに読みやすいと思います.PHPモードの開始と終了をあちこちで混ぜ続けてください<?php ?>.

いくつかの私見の利点:

  • 中括弧の開きと閉じ
  • 適切なインデント
  • あちこちに開始タグと終了<?php ?>タグがない

PS

投稿が html エンティティ エンコードされていることを確認しますか? そして、本当にそれらをデコードしたいですか? ほとんどの場合、そのままで済みますhtmlspecialchars()。また、表示する前にデコードすることは、多くの場合悪い考えであり、XSS の脆弱性を引き起こす可能性があります。ただし、特定のケースではわかりません。何をしているかを確認するためのリマインダーです :-) たとえば、XSS を防止するためにエンコードせずにデコードしますか?

PPS

最後に 1 つ。Paulがコメントで述べたように、インライン CSS を削除する必要があります。

于 2012-08-28T23:06:07.600 に答える
2

マイケル、

簡単な答えはイエスです。

セミコロンで終了する必要があります。<? endif; ?>

于 2012-08-28T23:03:51.650 に答える
0

時にはインデントが読みやすくするのに役立ちます (PHP/HTML インデントがどのように共存できるかを示すためにドキュメントにラップされています):

<?php
$blogexcerpt = $Blog->create_excerpt(html_entity_decode($post->content), 0, 250);
?>
<html>
    <body>
<?php if ( strlen(preg_replace( '/\s+/', ' ', $blogexcerpt)) < 5 ): ?>
        <h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">View Media…&lt;/a></h5>
<?php elseif ( strlen($Blog->create_excerpt(html_entity_decode($post->content), 0, 255)) < 250 ): ?>
        <?php echo $blogexcerpt; ?>
        <h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">View post</a></h5>
<?php else: ?>
        <?php echo $blogexcerpt; ?><span style="display: inline;">…&lt;/span>
        <h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">Read more…&lt;/a></h5>
<?php endif; ?>
    </body>
</html>
于 2012-08-28T23:11:13.240 に答える