1 回答
TA贡献2039条经验 获得超7个赞
此代码进行了一些更改。
这不是使用输出缓冲,而只是将值设置为全通。这允许您检查是否已设置以前的值并添加到末尾,或者如果它到达循环的末尾并且仍然为空,则可以设置打开的文本。$status*$status
我还将静态文本分配移到了循环之外,因为您不需要每次都设置它们。
最后你有两次,所以这删除了那个...if (strpos($f->title, $title) !== false)
$green_color = 'green';
$orange_color = 'orange';
$red_color = 'red';
$closed_text = 'closed';
$maintenance_text = 'maintenance';
$exception_text = 'could be';
$status = "";
$records = 0;
foreach(Feed('https://www.vegvesen.no/trafikk/xml/savedsearch.rss?id=604') as $f ) {
$records++;
if (strpos($f->title, $title) !== false) {
if(strpos($f->description, $closed_text) !== false){
// If no previous value, set main text,otherwise add *
if ( empty($status) ) {
$status = (strpos($f->description, $exception_text) === false) ?
'<span style="color:'.$red_color.';text-shadow: 2px 2px #a50000;">closed</span>'
: '<span style="color:'.$green_color.'">Open</span>' ;
}
else {
$status .= "*";
}
}
else if(strpos($f->description, $maintenance_text) !== false){
if ( empty($status) ) {
$status = (strpos($f->description, $exception_text) === false) ?
'<span style="color:'.$orange_color.'">maintenance</span>' :
'<span style="color:'.$green_color.'">Open</span>' ;
}
else {
$status .= "*";
}
}
}
}
// If still empty, say open
if ( empty ( $status ) ){
$status = '<span>Open</span>';
if ( $records > 0 ) {
$status.="*";
}
}
echo $status;
您可以在设置橙色和红色部分时删除测试,如果 文本中有 ,则忽略该项目。(strpos($f->description, $exception_text) === false)$exception_text
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报