Этот код вносит пару изменений.
Вместо использования буферизации вывода, это просто устанавливает значения в $status
на всем протяжении. Это позволяет вам проверить, было ли установлено предыдущее значение, и добавить *
в конец или, если оно достигает конца l oop, а $status
все еще пусто, можно установить открытый текст.
Я также переместил текстовые назначения stati c за пределы l oop, поскольку вам не нужно каждый раз их устанавливать.
Наконец, у вас было 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
.