PHP 减少代码字符数
PHP Decrease Code Character Count
我有一段代码可以读取 RSS 提要并显示前 5 个结果。
一切都按预期工作,但是为了满足我的需要,字符总数需要不超过 350。目前是 370。
有什么方法可以"minify"此代码,使其功能保持不变,但不超过 350 个字符。
代码;
<?php
$r = simplexml_load_file("https://example.com/feed");
if(!empty($r)) {
$i=0;
foreach ($r->channel->item as $f) {
if($i>=5) break;
?>
<p><a href="<?= $f->link; ?>"><?= $f->title; ?></a></p>
<p><?= implode(' ', array_slice(explode(' ', $f->description), 0, 14)) . "..."; ?></p>
<?php
$i++;
}
}
?>
备注;
- 我需要将标题回显为 html link
- 我需要标题和说明出现在各个段落上
- 我需要截断描述
如有任何建议,我们将不胜感激。
这是我减少到 251-255 个字符的内容(删除换行符以减少更多字符):
<?php
if($r = simplexml_load_file("https://example.com/feed")){
$i=0;foreach($r->channel->item as $f){if($i>=5){break;}$i++;
echo "<p><a href='{$f->link}'>{$f->title}</a></p><p>".implode(' ',array_slice(explode(' ',$f->description),0,14))."...</p>";
}}
?>
通过在分配时在 if 块中进行 'falsey' 比较,您可以节省更多。这应该可以工作,好像 simplexml_load_file return 是什么,它应该是 xml,如果失败则为 false,这将使它不执行块。
对于那个奇怪的 implode/array_slice/explode 可能有更多的简化,但我在最初的测试中没有找到。
我会做 foreach($r->channel->item as $i=>$f){if($i>=5){break;}
,但我不确定你的 xml return 是否是纯索引数组。
我有一段代码可以读取 RSS 提要并显示前 5 个结果。
一切都按预期工作,但是为了满足我的需要,字符总数需要不超过 350。目前是 370。
有什么方法可以"minify"此代码,使其功能保持不变,但不超过 350 个字符。
代码;
<?php
$r = simplexml_load_file("https://example.com/feed");
if(!empty($r)) {
$i=0;
foreach ($r->channel->item as $f) {
if($i>=5) break;
?>
<p><a href="<?= $f->link; ?>"><?= $f->title; ?></a></p>
<p><?= implode(' ', array_slice(explode(' ', $f->description), 0, 14)) . "..."; ?></p>
<?php
$i++;
}
}
?>
备注;
- 我需要将标题回显为 html link
- 我需要标题和说明出现在各个段落上
- 我需要截断描述
如有任何建议,我们将不胜感激。
这是我减少到 251-255 个字符的内容(删除换行符以减少更多字符):
<?php
if($r = simplexml_load_file("https://example.com/feed")){
$i=0;foreach($r->channel->item as $f){if($i>=5){break;}$i++;
echo "<p><a href='{$f->link}'>{$f->title}</a></p><p>".implode(' ',array_slice(explode(' ',$f->description),0,14))."...</p>";
}}
?>
通过在分配时在 if 块中进行 'falsey' 比较,您可以节省更多。这应该可以工作,好像 simplexml_load_file return 是什么,它应该是 xml,如果失败则为 false,这将使它不执行块。
对于那个奇怪的 implode/array_slice/explode 可能有更多的简化,但我在最初的测试中没有找到。
我会做 foreach($r->channel->item as $i=>$f){if($i>=5){break;}
,但我不确定你的 xml return 是否是纯索引数组。