Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Генерация иконки для репорта на PHP

22K
07 октября 2008 года
kotelius
75 / / 08.08.2008
Добрый день, подскажите пожалуйста.
Такая ситуация:
У меня есть репорт в формате html, он генерится из под Юникса.
Есть страничка на сайте, на которой должна отображатся иконка статуса этого репорта (Ok или ERROR).
Подскажите плс, как на РНР сделать так чтобы из этого html файла вычитывалось значение какой-то переменной (Ok или Error) - оно тоже будет передаватся из юникса в эту стрн., но будет заккоменчено, и соответственно выбирало б какую иконку грузить.

Заранее спасибо.
92
07 октября 2008 года
Тень Пса
2.2K / / 19.10.2006
открываешь файл, ищешь <!-- status_value (OK/Error) --> и в зависимости от того, что у тебя там в комменте было, ставишь иконку...

в чем именно проблема? как открыть файл и прочитать строку из него?
366
08 октября 2008 года
int
668 / / 30.03.2005
Предположим, что в файле report.html содержится одна строка, принимающая значения "ok" или иное
 
Код:
$n=file("report.html");
$n=trim($n[0]);
if ($n == "ok") echo '<img src="ok.gif">';
else echo '<img src="err.gif">';

В более сложном случае нужно парсить файл (тоже элементарно)
22K
08 октября 2008 года
kotelius
75 / / 08.08.2008
to: Тень Пса
Да, броблема именно в том как открыть файл и прочитать строку из него. Вот кусок кода:
---------------------------------
report.html

[COLOR="Red"]!!! Здесь будет закоменчена переменная типа:[/COLOR] [COLOR="Blue"]<!-- status="OK/Error" --> [/COLOR]
<html><head><title>Report page</title></head><body><pre>
<a name="TOP"><b><center><h4>Systems check report</h4></center></b></a><hr color=black>
<a href="#ARE001"><h5>Blabla1 check report</a>
<font color='red'>Test has Errors</font>
<a href="#ENV001">Blabla2 check report</a>
<font color='red'>Test has Errors</font>
<a href="#PAT001">Blabla3 check report</a>
<font color='green'>Test Passed</font>
<a href="#RPT001">Blabla4 check report</a>
<font color='green'>Test Passed</font>
<a href="#SEC001">Blabla5 check report</a>
<font color='green'>Test Passed</font>
<hr color=black>
---------------------------------
Репорт состоит из где-то 10 страниц. И вот нужно как-то вычитать эту переменную.


to: int
trim не подходит так как файл содержит дофига инфы, и сама иконка будет показывать статус (общий) репорта, а также являтся ссылкой на сам репорт.
9.0K
08 октября 2008 года
t-34
129 / / 30.11.2007
В файле репорта первая строка - коммент <!--OK/ERROR--> означающий статус.
<?
$handle = fopen("report.html", "r");
$status = ltrim(rtrim(fscanf($handle, "%s\n"), "-->"),"<!--");
if ($status=="OK")....
?>
22K
08 октября 2008 года
kotelius
75 / / 08.08.2008
Ребята, спасибо всем за помощь!!!

to t-34:
Твой метод мне понятен, но не могу понять почему после долгих испытаний переменная $status все время принимает значение "Array".

to int:
Буду наверное статус репорта кидать в отдельный файл, и воспользуюсь твоей подсказкой, хотя не хочется создавать еще пару десятков лишних файлов, т.к. репортов очень много.

В общем, всем огромное спасибо.
22K
08 октября 2008 года
kotelius
75 / / 08.08.2008
Если кому-то интересно, то вот как я все это реализовал:

[COLOR="DarkGreen"]<?php
[COLOR="Blue"]$handle[/COLOR] = fopen ("[COLOR="Red"]report.htm[/COLOR]", "r");
while (!feof ([COLOR="Blue"]$handle[/COLOR])) {
[COLOR="blue"]$line[/COLOR] = fgets ([COLOR="blue"]$handle[/COLOR], 1024);
if (eregi ("<!--(.*)-->", [COLOR="blue"]$line[/COLOR], [COLOR="blue"]$out[/COLOR])) {
[COLOR="blue"]$status[/COLOR] = [COLOR="blue"]$out[/COLOR][1];
break;
}
}
fclose([COLOR="blue"]$handle[/COLOR]);
if ([COLOR="blue"]$status[/COLOR] == "OK") echo '[COLOR="red"]<img src="files/ok.jpg">[/COLOR]';
else echo '[COLOR="red"]<img src="files/er.jpg">[/COLOR]';

?>[/COLOR]

Главное, что работает.
13
08 октября 2008 года
RussianSpy
3.0K / / 04.07.2006
можно было намного проще без всяких регулярок (тем более убогих ereg) с помощью обычных строковых функций...
92
08 октября 2008 года
Тень Пса
2.2K / / 19.10.2006
Цитата: kotelius
Если кому-то интересно, то вот как я все это реализовал:

[COLOR=DarkGreen]<?php
[COLOR=Blue]$handle[/COLOR] = fopen ("[COLOR=Red]report.htm[/COLOR]", "r");
while (!feof ([COLOR=Blue]$handle[/COLOR])) {
[COLOR=blue]$line[/COLOR] = fgets ([COLOR=blue]$handle[/COLOR], 1024);
if (eregi ("<!--(.*)-->", [COLOR=blue]$line[/COLOR], [COLOR=blue]$out[/COLOR])) {
[COLOR=blue]$status[/COLOR] = [COLOR=blue]$out[/COLOR][1];
break;
}
}
fclose([COLOR=blue]$handle[/COLOR]);
if ([COLOR=blue]$status[/COLOR] == "OK") echo '[COLOR=red]<img src="files/ok.jpg">[/COLOR]';
else echo '[COLOR=red]<img src="files/er.jpg">[/COLOR]';

?>[/COLOR]

Главное, что работает.


допустим $status_line - результат fgets
статус записывается так <!--OK/Error-->

 
Код:
if (strpos(trim($status_line), "OK", 4) !== false)
{
   $status = "ok_image";
}
else
{
   $status = "error_image";
}
вот без регулярок... но я как всегда опоздал ;)
22K
09 октября 2008 года
kotelius
75 / / 08.08.2008
to Тень Пса: Всеодно огромное спасибо, для общего развития пригодится.
Я просто не сильный спец в РНР, но иногда бывают задачи кое-что реализовать на нем, вот и ламаю себе голову :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог