0

我想使用<?php if (statement): ?>,<?php else if (statement): ?><?php else: ?>lines 使我的代码更具可读性。我不太确定这是否是正确的语法。我也想知道我是否可以在这些 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 ?>标签

附言

你确定帖子是html实体编码的吗?你确定你真的想解码它们吗?大多数时候,你可以侥幸逃脱htmlspecialchars()。在显示之前解码通常是一个坏主意,并且可能会引入 XSS 漏洞。虽然不确定你的具体情况。只是提醒您注意您在做什么 :-) 例如,您确定要对其进行解码而不是对其进行编码以防止 XSS 吗?

聚苯乙烯

最后一件事。正如保罗在他的评论中所说的那样,当我们忙于使其更具可读性时,你真的应该放弃那个内联 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 回答