ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Вывод изображения

 

5421
Глеб @Глебон
Вот появилась такая проблема
Нужно вывести изображение причём это должно быть так:
$per = 'Текст на инглише. Он динамичен';

$per2 = '<img src="/images/$per.png" border="0">'

Так вот проблема возникла в том что иногда изображение может отсутствовать на сервере и нужно просто вывести текст из $per кто может подскажите как можно это сделать просто не селён в php.

1130
Александр @WestSide
Глебон пишет:

Вот появилась такая проблема
Нужно вывести изображение причём это должно быть так:
$per = 'Текст на инглише. Он динамичен';

$per2 = '<img src="/images/$per.png" border="0">'

Так вот проблема возникла в том что иногда изображение может отсутствовать на сервере и нужно просто вывести текст из $per кто может подскажите как можно это сделать просто не селён в php.

это изображение будет на серевере? тогда условием
if(file_exists("/home/user/user.ru/images/$per.png")){
$per2 = "<img src=\"/images/$per.png\" border=\"0\">";
echo $per2;
}else{
echo $per;
}

Отредактировано WestSide - 30.03.2010
5421
Глеб @Глебон
Ладно опишу всю ситуацию.
У меня есть скрипт для модуля на vBa CMPS. Он выводит различную информацию о канале радиостанции так вот он:
<?php
// Shoutcast Server Stats
$scdef = "Cool Radio";
$scip = "live.cool-radio.ru";
$scport = "8020";
$scpass = "бла бла пароль";
//End configuration


// Parses shoutcasts xml to make an effective stats thing for any website
$scfp = @fsockopen($scip, $scport, &$errno, &$errstr, 1);

if(!$scfp) {
eval('$home["$mods[modid]"][\'content\'] .= "' . fetch_template('adv_portal_shoutcast_off') . '";');

}else{
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
}

//define xml elements

$loop = array("AVERAGETIME", "CURRENTLISTENERS", "PEAKLISTENERS", "MAXLISTENERS", "SERVERGENRE", "SERVERURL", "SERVERTITLE", "SONGTITLE", "SONGURL", "IRC", "ICQ" ,"AIM", "WEBHITS", "STREAMHITS", "LISTEN", "STREAMSTATUS", "BITRATE", "CONTENT");

//define all the variables to get (delte any ones you don't want)
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);
;
$y++;
}
//end intro xml elements

//get song info and history
$pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
$pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
$songatime = explode("<SONG>", $pageed);
$r=1;
while($songatime[$r]!=""){
$t=$r-1;
$playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
$playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
$song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
$song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
$song[$t] = urldecode($song[$t]);

require_once('./a.charset.php');
$song[$t] = unicode_escape("$song[$t]");

$dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
$dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$dj[$t]=unicode_escape("$dj[$t]");
$r++;
}



//end song info

fclose($scfp);
}

$averagemin = round($averagetime/60,2);
$irclink = 'irc://'.$ircsite.'/'.$irc.'';
$listenamp = 'http://'.$scip.':'.$scport.'/listen.pls';
$listenlnk = 'http://'.$scip.':'.$scport.'';

// MP popup link
if ($_REQUEST['do'] == 'mp')
{
eval('print_output("' . fetch_template('adv_portal_shoutcast_mp') . '");');
}

// RP popup link
if ($_REQUEST['do'] == 'rp')
{
eval('print_output("' . fetch_template('adv_portal_shoutcast_rp') . '");');
}

// QT popup link
if ($_REQUEST['do'] == 'qt')
{
eval('print_output("' . fetch_template('adv_portal_shoutcast_qt') . '");');
}

//display stats
if($scfp) {
if($streamstatus == "1"){
//you may edit the html below, make sure to keep variable intact
eval('$home["$mods[modid]"][\'content\'] .= "' . fetch_template('v_efire') . '";');
} else {
eval('$home["$mods[modid]"][\'content\'] .= "' . fetch_template('adv_portal_shoutcast_off') . '";');
}
}
?>

Так вот я хочу ввести ещё одну переменную вывода визитки ведущего, но проблема в том что бывают и новички на канале которым визитку ещё попросту не успели сделать и нужно выводить просто текст переменной $servertitle - а это имя ведущего в эфире. И визитки лежат в папке /domains/cool-radio.ru/public_html/images/rj/"$servertitle - тоесть имя визитки".png

1130
Александр @WestSide
покажи функцию print_output

5421
Глеб @Глебон
WestSide, если я тебя понял то ты имеешь в виду одну из 3 подобных строчек:
eval('print_output("' . fetch_template('adv_portal_shoutcast_mp') . '");');

Но эта дрянь указывает на шаблоны быстрых плееров.

1130
Александр @WestSide
Глебон пишет:

WestSide, если я тебя понял то ты имеешь в виду одну из 3 подобных строчек:
eval('print_output("' . fetch_template('adv_portal_shoutcast_mp') . '");');

Но эта дрянь указывает на шаблоны быстрых плееров.

удали их посмотри что изменится, а так сложно посомтреть что и куда вставить...
Я думаю эта функция аналог самопис echo , но все же...

5421
Глеб @Глебон
убрал существенно вроде ничего не изменилось.....

5421
Глеб @Глебон
Предыдущую затею решил, но опять же возникла проблема с картинкой теперь уже с подобием юзер бара. Дабы сделать тест делал всё на чёрном фоне 😀 И вот проблема текст на русском выводится синфолами непонятными
Код:
//Сверху код паршера SHOUTcast
.....
//Сам вывод изображения и создания на нём текста

header ("Content-type: image/png");
$im = ImageCreateFromPng("blank.png");
$color = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 8, 0, 20, 20, $color, "verdana.ttf", "Song: $song[0]");
imagettftext ($im, 8, 0, 20, 40, $color, "verdana.ttf", "Title: $servertitle");
imagettftext ($im, 8, 0, 20, 60, $color, "verdana.ttf", "RJ: $aim");
imagettftext ($im, 8, 0, 20, 80, $color, "verdana.ttf", "ICQ: $icq");
imagettftext ($im, 8, 0, 20, 100, $color, "verdana.ttf", "Listeners: $currentlisteners");
imagettftext ($im, 8, 0, 20, 120, $color, "verdana.ttf", "Bitrate: $bitrate");

imagepng ($im);
imagedestroy ($im);


?>

И в итоге ужасно! Пример ниже!
Подскажите как сделать, что бы русские буквы отображались!

4036
DelFast @DelFast
отпишу попозже работающий вариант

Отредактировано DelFast - 14.05.2010
6600
Александр @admiral
Глебон пишет:

Подскажите как сделать, что бы русские буквы отображались!

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Вверху попробуй прописать, не поможет прийдется тогда переконвертировать в utf через $text=iconv("windows-1251","utf-8"...

1130
Александр @WestSide
НУ или попробуй отправить еще один заголовок:
header("Content-Type: text/html;charset=КОДИРОВКА(windows-1251, utf-8 и т.д)");

Отредактировано WestSide - 14.05.2010
5421
Глеб @Глебон
Добавил строчку
header("Content-Type: text/html;charset=windows-1251");
Но на страницу выводятся синволы различные 😀
Посмотрел инфо о странице и там написано, что кодировка windows-1251

4036
DelFast @DelFast
Актуально?

1130
Александр @WestSide
Глебон пишет:

Добавил строчку
header("Content-Type: text/html;charset=windows-1251");
Но на страницу выводятся синволы различные 😀
Посмотрел инфо о странице и там написано, что кодировка windows-1251

пост адмирала прочитай... :-) там решение...

5421
Глеб @Глебон
WestSide, тоже так пробывал
$song_conv = (iconv("utf-8","cp1252",$song[0]),3);
Перестаёт грузиться

Отредактировано Глебон - 20.05.2010
4036
DelFast @DelFast
....
$song_conv = iconv("utf-8","cp1252",$song[0]);
....
imagettftext ($im, 8, 0, 20, 20, $color, $song_conv);

помоему так

5421
Глеб @Глебон
Решил не создавать новой темы испросить тут.
Решил в скрипт статистики который выводится на главной радио сделать такую херню типа что бы записывался максимум слушателей, при ком и что играло.... прогуглив я сделал это данные записываются в max.php.
Собственно сам max.php:
Эта информация скрыта и доступна только зарегистрированным пользователям.


и кусок который записывает:
Эта информация скрыта и доступна только зарегистрированным пользователям.


Так вот всё бы хорошо, но если например в названии песни есть пробелы или тегах ведущего то всё сразу не отображает на сайте данные. Как можно это исправить?

4036
DelFast @DelFast
Эта информация скрыта и доступна только зарегистрированным пользователям.

Эта информация скрыта и доступна только зарегистрированным пользователям.

Отредактировано DelFast - 24.08.2010
5421
Глеб @Глебон
DelFast, после записи выходит ошибка на странице.

1130
Александр @WestSide
<?php
if ($listeners>$max)
{
$text = "<?php \n";
$text .= "\$max = \"$listeners\"; \n";
$text .= "\$vizitka = \"$description\";\n";
$text .= "\$vizitka2 = \"$station_conv\";\n";
$text .= "\$igralo = \"$song_conv\";\n";
$text .= "?>";
$fp = fopen("max.php", "w+");
flock($fp, LOCK_EX);
fwrite($fp, $text);
flock($fp, LOCK_UN);
fclose($fp);
$max = $listeners;
$vizitka = $description;
$igralo = $song_conv;
$vizitka2 = $station_conv;
}
?>