НАРОД подскажите плиз есть ли где нибуть скрипт новостей на php который черпает новости с RSS 2.0
ОЧЕНЬ НАДО
ОЧЕНЬ НАДО
лечиться нужно, пока не поздно /Cheery/
Функция обработки BB-кодов однопроходная:
Написал свой первый класс для построения временной диаграммы/кривой (например для отображения статистики скачивания файла за последние дни).
<?php
class lz_graf {
public $im;//Идентификатор изображения
private $heigh;//Высота изображения
private $width;//Ширина изображения
private $punkt_x;//Выводить ли пунктирную горизонтальную линию?
private $punkt_y;//Выводить ли пунктирную вертикальную линию?
private $punkt_x_color;//Цвет пунктирной горизонтальной линии
private $punkt_y_color;//Цвет пунктирной вертикальной линии
private $razd_x_color;//Цвет оси х
private $razd_y_color;//Цвет оси у
private $razd_size;//Размер разделительной линии
private $otstup_x;//Отступ от края изобр до графика по оси х
private $otstup_y;//Отступ от края изобр до графика по оси у
private $razd_x_text_size;//Размер текста разметки по оси х
private $razd_y_text_size;//Размер текста разметки по оси у
private $razd_x_text_color;//Цвет текста разметки по оси x
private $razd_y_text_color;//Цвет текста разметки по оси у
private $razd_x_text_otstup;//Отступ надписи от края графика по оси х
private $razd_y_text_otstup;//Отступ надписи от края графика по оси у
private $diagram_or_gr;//0 - вывод в виде диаграммы, 1-графика
private $gr_color;//Цвет графика (ломаной кривой)
private $y_name;//Массив элементов по ординате
private $x_name;//Массив элементов по абциссе
private $pryamoug_color;//Цвет прямоугольников (в виде диаграммы)
private $pryamoug_gr;//Цвет границы прямоугольников (в виде диаграммы)
private $bgc;//Цвет фона
//Конструктор
public function __construct($heigh=300, $width=502, $punkt_x=1, $punkt_y=1, $razd_size=3, $otstup_x=0.04,
$otstup_y=0.09, $razd_x_text_size=3, $razd_y_text_size=3, $razd_x_text_otstup=0.2,
$razd_y_text_otstup=1.015, $diagram_or_gr=0,
$dannie=array('5','4','1','6','1','3','5','2','6','4','1','7', '5','6','4','2','3','6', '5','4','5','4','6','5','2', '3','6','4','1','5','7')) {
$this->heigh=$heigh;
$this->width=$width;
$this->punkt_x=$punkt_x;
$this->punkt_y=$punkt_y;
$this->razd_size=$razd_size;
$this->otstup_x=$otstup_x;
$this->otstup_y=$otstup_y;
$this->razd_x_text_size=$razd_x_text_size;
$this->razd_y_text_size=$razd_y_text_size;
$this->razd_x_text_otstup=$razd_x_text_otstup;
$this->razd_y_text_otstup=$razd_y_text_otstup;
$this->diagram_or_gr=$diagram_or_gr;
$this->y_name=array('0', '1', '2','3', '4', '5', '6', '7', '8', '9', '10');
$this->x_name=0;
$this->dannie=$dannie;
$this->im= ImageCreateTrueColor($this->width, $this->heigh);
$this->razd_x_text_otstup=$razd_x_text_otstup;
$this->razd_y_text_otstup=$razd_y_text_otstup;
$this->diagram_or_gr=$diagram_or_gr;
$this->dannie=$this->mashtab(); //Масштабирование данных
}
//Деструктор
public function __destruct() {
ImageDestroy($this->im);
}
//Масштабирование данных (для наглядности)
/*Если есть элемент превышающий 10
--уменьшаем все элементы на 10
--увеличиваем разметку на 10*/
private function mashtab (){
$flag=0;
while ($flag == 0){
$flag=1;
for ($i=0; $i<count($this->dannie); $i++){
if ($this->dannie[$i] > 10) {
$flag=0;
}
}
if ($flag == 0) {
for ($k=0; $k<count($this->dannie); $k++){
settype($this->dannie[$k],'double');
$this->dannie[$k]=$this->dannie[$k]/10;
settype($this->dannie[$k],'string');
}
for ($k=0; $k<count($this->y_name); $k++){
settype($this->y_name[$k],'integer');
$this->y_name[$k]=$this->y_name[$k]*10;
settype($this->y_name[$k],'string');
}
//Увеличиваем отступ, чтобы разметка не наезжала на ось
$this->otstup_x=$this->otstup_x*1.25;
}
}
unset($this->x_name);
for ($k=0; $k<count($this->dannie); $k++){
$this->x_name[$k]=$k+1;
}
return $this->dannie;
}
//Разметка оси у со штрихами
private function sep_y_ () {
$n=count($this->y_name);
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$w=$this->width-($this->width*$this->otstup_x);
$length=($y1-$y0)/($n-1);
for ($i=0; $i<$n; $i++){
ImageLine($this->im, $x0, $y0, $x0+$this->razd_size, $y0, $this->razd_x_color);
ImageLine($this->im, $x0, $y0, $x0-$this->razd_size, $y0, $this->razd_x_color);
$style=array($this->punkt_x_color,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT);
imagesetstyle($this->im, $style);
ImageLine($this->im, $x0, $y0, $w, $y0, IMG_COLOR_STYLED);
$y0+=$length;
}
}
//Разметка оси х без штрихов
private function sep_y_lite_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$n=count($this->y_name);
$length=($y1-$y0)/($n-1);
for ($i=0; $i<$n; $i++){
ImageLine($this->im, $x0, $y0, $x0+$this->razd_size, $y0, $this->razd_x_color);
ImageLine($this->im, $x0, $y0, $x0-$this->razd_size, $y0, $this->razd_x_color);
$y0+=$length;
}
}
//Разметка оси х со штрихами
private function sep_x_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=count($this->x_name);
$h=$this->heigh*$this->otstup_y;
$length=($x1-$x0)/$m;
for ($i=0; $i<$m-1; $i++){
$x0+=$length;
ImageLine($this->im, $x0, $y0, $x0, $y0+$this->razd_size, $this->razd_y_color);
ImageLine($this->im, $x0, $y0, $x0, $y0-$this->razd_size, $this->razd_y_color);
$style=array($this->punkt_y_color,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT);
imagesetstyle($this->im,$style);
ImageLine($this->im, $x0, $h, $x0, $y0, IMG_COLOR_STYLED);
}
}
//Разметка оси х без штрихов
private function sep_x_lite_ () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=count($this->x_name);
$length=($x1-$x0)/$m;
for ($i=0; $i<$m-1; $i++){
$x0+=$length;
ImageLine($this->im, $x0, $y0, $x0, $y0+$this->razd_size, $this->razd_y_color);
ImageLine($this->im, $x0, $y0, $x0, $y0-$this->razd_size, $this->razd_y_color);
}
}
//Вывод надписей разметки оси ординат
private function sep_y_text_ (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh*$this->otstup_y;
$x1=$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$n=$this->y_name;
$length=($y1-$y0)/(count($n)-1);
$n=array_reverse($n);
$y0-=$length;
for ($i=0; $i<count($n); $i++){
$y0+=$length;
ImageString($this->im, $this->razd_x_text_size, $x0*$this->razd_x_text_otstup, $y0-5, $n[$i], $this->razd_x_text_color);
}
}
//Вывод надписей разметки оси х
private function sep_x_text_ (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh-$this->heigh*$this->otstup_y;
$m=$this->x_name;
$length=(($x1-$x0)/count($m));
$flag=1;
for ($i=0; $i<count($m); $i++){
$x0+=$length;
if ($flag==1){
$flag=-1;
ImageString($this->im, $this->razd_y_text_size, $x0-13, $y0*$this->razd_y_text_otstup, $m[$i], $this->razd_y_text_color);
} else $flag=1;
}
}
//Вычисление положения точки
private function dlina ($m, $length,$y0){
$p=(round($m)*$length)+(($m-round($m))*$length);
$p=$y0-$p;
return $p;
}
//Построение прямоугольников (для диаграммы)
private function pryamoug () {
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh*$this->otstup_y;
$m=$this->dannie;
$n=$this->x_name;
$length=(($x1-$x0)/(count($n)));
$length_y=(($y0-$y1)/(count($this->y_name)-1));
$x0+=$length;
imagesetthickness($this->im,1);
for ($i=0; $i<count($m); $i++){
imagefilledrectangle($this->im,$x0,$y0,$x0-$length,$this->dlina($m[$i], $length_y, $y0),$this->pryamoug_color);
imagerectangle($this->im,$x0,$y0,$x0-$length,$this->dlina($m[$i], $length_y, $y0),$this->pryamoug_gr);
$x0+=$length;
}
}
//Построение графика
private function line (){
$x0=$this->width*$this->otstup_x;
$y0=$this->heigh-$this->heigh*$this->otstup_y;
$x1=$this->width-$this->width*$this->otstup_x;
$y1=$this->heigh*$this->otstup_y;
$m=$this->dannie;
$length=(($x1-$x0)/(count($this->x_name)));
$yy0=$y0;
$style=array($this->gr_color);
imagesetstyle($this->im,$style);
$length_y=(($y0-$y1)/(count($this->y_name)-1));
$flag=1;
for ($i=0; $i<count($m); $i++){
if ($flag==0){
imageline($this->im,$x0,$yy0,$x0+$length,$this->dlina($m[$i], $length_y, $y0),IMG_COLOR_STYLED); }
else {$flag=0;}
$yy0=$this->dlina($m[$i], $length_y, $y0);
$x0+=$length;
}
}
//Устанавливаем цвета
public function set_color ($punkt_x_color, $punkt_y_color, $razd_x_color, $razd_y_color, $razd_x_text_color, $razd_y_text_color, $gr_color, $pryamoug_color, $pryamoug_gr, $bgc){
$this->punkt_x_color=$punkt_x_color;
$this->punkt_y_color=$punkt_y_color;
$this->razd_x_color=$razd_x_color;
$this->razd_y_color=$razd_y_color;
$this->razd_x_text_color=$razd_x_text_color;
$this->razd_y_text_color=$razd_y_text_color;
$this->gr_color=$gr_color;
$this->pryamoug_color=$pryamoug_color;
$this->pryamoug_gr=$pryamoug_gr;
$this->bgc=$bgc;
}
//Отображение графика
public function show (){
ImageFill($this->im, 0, 0, $this->bgc);
imagesetthickness($this->im,2) ;
ImageLine($this->im, $this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->width-$this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->razd_x_color);
$otstup_xx=$this->otstup_x;
if ($this->diagram_or_gr==0){
$this->pryamoug ();
} else {
$this->line();
}
ImageLine($this->im, $this->width*$this->otstup_x, $this->heigh*$this->otstup_y, $this->width*$this->otstup_x, $this->heigh-$this->heigh*$this->otstup_y, $this->razd_y_color);
if ($this->punkt_x==1) {
$this->sep_y_();
} else {
$this->sep_y_lite_();
}
if ($this->punkt_y==1){
$this->sep_x_();
} else {
$this->sep_x_lite_();
}
$this->sep_y_text_();
$this->sep_x_text_();
Header ('Content-type: image/png');
ImagePng ($this->im);
}
}
?>
<?php
//Пример использования класса lz_graf
require_once('lz_graf.php');
$dannie=array('50','34','89','77','27','20','60','43','53','88','11','12','25','45');
$a=new lz_graf(300, 502, 1, 1, 3, 0.04, 0.09, 3, 3, 0.2,1.015, 0,$dannie);
/*
Параметры:
300 - высота изображения
502 - ширина изображения
1 - выводить ли пунктирные линии по оси x (1-да, 0-нет)
1 - выводить ли пунктирные линии по оси x (1-да, 0-нет)
3 - Размер разделительной линии
0.04 - Отступ от края изобр до графика по оси х
0.09 - Отступ от края изобр до графика по оси y
3 - Размер текста разметки по оси х
3 - Размер текста разметки по оси y
0.2 - Отступ надписи от края графика по оси х
1.015 - Отступ надписи от края графика по оси y
0 - вывод в виде диаграммы или графика (ломанной кривой) (0-диаграмма, 1-кривая)
$dannie - массив данных для построения
*/
$white=ImageColorAllocate ($a->im, 255, 255, 255);
$blue=ImageColorAllocate ($a->im, 0, 0, 64);
$red=ImageColorAllocate ($a->im, 250, 43, 5);
$blue1=ImageColorAllocate ($a->im, 0, 64, 128);
$a->set_color($white,$white,$white,$white,$white,$white,$white,$blue1,$white, $blue);
$a->show();
?>
LusAvedus
дебют не удался - php.net/is_numeric
ps: 2.5 это уже не число?
pps: [0-9]+[0-9] эквивалентно [0-9]{2,}
ppps: (-)? чтобы не дублировать по 10 раз
if ($QUERY_STRING!=''){
Извлечение сайта из ссылки
Значение параметра строки запроса
Предыдущая тема: Perl: Полезные решения