我想使用<?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…</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;">…</span>
<h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">Read more…</a></h5>
<?php endif>
答案 0 :(得分: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…</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;">…</span>';
echo '<h5 style="margin:0px;"><a href="' . $Blog->get_blog_url('post').$post->slug; . '" class="blog_post_link">Read more…</a></h5>';
}
虽然这可能仅仅是个人偏好,但我认为这更具可读性,然后让所有<?php ?>
的所有人保持混合打开和关闭PHP模式。
一些恕我直言的好处:
<?php ?>
标签<强> PS 强>
你确定帖子是html实体编码的吗?你确定你真的想解码它们吗?大多数时候你可以逃脱htmlspecialchars()
。在显示之前解码通常是一个坏主意,可能会引入XSS漏洞。不过你的具体情况不确定。只是提醒你看你在做什么:-)例如你确定要解码它而不是编码它来阻止XSS吗?
<强> PPS 强>
最后一件事。在我们忙于使其更具可读性时,您应该将该内联CSS放在他的评论中所述的Paul。
答案 1 :(得分:2)
简短的回答是肯定的。
你需要以分号结尾:<? endif; ?>
答案 2 :(得分: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…</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;">…</span>
<h5 style="margin:0px;"><a href="<?php echo $Blog->get_blog_url('post').$post->slug; ?>" class="blog_post_link">Read more…</a></h5>
<?php endif; ?>
</body>
</html>