Полезные функции РНР (1 пост)
1486
Кураторы темы:
Azzido
0
<?php //получаем скриншот с видео (используем ffmpeg) // путь до файла $file = "/www/1.avi"; // кадр который будем выхватывать $frame = 150; // получаем кадр $movie = new ffmpeg_movie($file); $image = $movie->getFrame($frame); $show_img = $image->toGDImage(); // выводим его header("Content-type: image/jpeg"); imagejpeg($show_img); imagedestroy($show_img); ?>
0
<?php // получаем скриншот и уменьшаем его (используем ffmpeg) // путь до файла $file = "/www/1.avi"; // кадр который будем выхватывать $frame = 150; // максимальный размер по высоте $max_width = 150; // получаем кадр в gd $movie = new ffmpeg_movie($file); $image = $movie->getFrame($frame); $show_img = $image->toGDImage(); // редактируем то что в gd $new_image = new ffmpeg_frame($show_img); //вычисляем старые значения ширины и высоты $old_width = $new_image->getWidth(); $old_heighgt = $new_image->getHeight(); // соотношение сторон $mov_ratio = $old_width/$old_heighgt; if($old_width > $max_width){ $new_width = $max_width; } // задаём новые параметры $new_height = $new_width / $mov_ratio; // изменяем размер $new_image->resize($new_width, $new_height); $new_show_img = $new_image->toGDImage(); // выводим его header("Content-type: image/jpeg"); imagejpeg($new_show_img); imagedestroy($new_show_img); ?>
0
<?php // создаём анимированый .gif (используем ffmpeg) // путь до файла $file = "/www/1.avi"; // поехали =) $movie = new ffmpeg_movie($file); // создаём анимацию $gif=new ffmpeg_animated_gif("/www/primer.gif",100 ,100 ,24); for ($frame = 150; $frame <= 200; $frame++) { $image = $movie->getFrame($frame); $gif->addFrame($image); } ?>
0
Регуляртное выражение проверки E-mail адресов
Регуляртное выражение для создания BB кода ICQ
<?php $mail = 'ChipeR@s60-club.net'; if (!preg_match('/^[a-zA-Z0-9-._]{3,25}@[a-zA-Z0-9-]{2,25}.[a-zA-Z]{2,4}$/',$mail)){ echo '<b><font color=red>Формат не верный!</font></b>'; }else{ echo '<b><font color=green>Формат верный!</font></b>'; }
Регуляртное выражение для создания BB кода ICQ
<?php $text = '[icq:7017970]'; echo preg_replace('#\[icq:( .*?[0-9]{5,9})\]#si','<img src="http://web.icq.com/whritepages/online?icq=\1&img=5" alt="ICQ" />ICQ: \1',$text); ?>
0
Функция замены строк в файле. Делал для себя,решил поделиться со всеми:
<? function replace($from,$to,$str,$file) { # $from - заменяемый текст # $to - текст на который заменяем # $str - строка в которой производим замену ('all - все строки') # $file - файл в котором производим замену if(!file_exists($file)){die("Файл '$file' не существует!");} $f1 = htmlspecialchars(file_get_contents($file)); if($str!=='all'){ $str = $str-1; $f_str = explode("\n",$f1); $f2 = str_replace($from,$to,$f_str[$str]); $f3 = str_replace($f_str[$str],$f2,$f1); $result = $f3; }else{ $f1 = htmlspecialchars(file_get_contents($file)); $f2 = str_replace($from,$to,$f1); $result = $f2; } if(file_put_contents($file,$result)) {die ('Замена произведена успешно!');} else {die ('Ошибка замены!');} } # Пример использования: $ex = explode('|',file_get_contents('1.dat')); replace($ex[0],'yeah','all','1.dat'); # или так: replace($ex[0],'yeah',7,'1.dat'); ?>
Изменил: KOZZ (28.07.2010 / 08:20)
0
че то жестокое ты изобразил
<?php function replace_string($file, $line, $new, $old=''){ $text = file($file); $text[$line] = ($old!='') ? str_replace($old, $new, $text[$line]) : $new."\r\n"; $ff = fopen($file, 'w'); fwrite($ff. implode('', $text)); fclose($ff); } ?>
0
хосты и хиты на файлах с проверкой на куки.
и выводим
$static = file("statistic.dat");
$ud = explode("|",$static[0]);
echo'Гостей сегодня: '.$ud[1].'<br>
Гостей за все время: '.$ud[0];
<?php # Если гость впервые на сайте if(empty($_COOKIE['day'])){ SetCookie("day",date('d'),time()+3600*24*350); $static = file("statistic.dat"); $ud = explode("|",$static[0]); $udnew = $ud[0]+1; $udnew2 = $ud[1]+1; if($ud[2]!=date('d')){ $udnew2=1; } $newst = $udnew.'|'.$udnew2.'|'.date('d'); $fop = fopen("statistic.dat", "r+"); fputs($fop,$newst); fclose($fop); } #Eсли гость и раньше бывал на сайте if(!empty($_COOKIE['day']) && $_COOKIE['day']!=date('d')){ SetCookie("day",date('d'),time()+3600*24*350); $static = file("statistic.dat"); $ud = explode("|",$static[0]); $udnew = $ud[1]+1; if($ud[2]!=date('d')){ $udnew=1; } $newst = $ud[0].'|'.$udnew.'|'.date('d'); $fop = fopen("statistic.dat", "r+"); fputs($fop,$newst); fclose($fop); }чтоб код работал создаем файл static.dat с содержанием 0|0|0
и выводим
$static = file("statistic.dat");
$ud = explode("|",$static[0]);
echo'Гостей сегодня: '.$ud[1].'<br>
Гостей за все время: '.$ud[0];
0
<?php set_time_limit (0); $excel = new COM("excel.application"); //Keep Excel invisible $excel->Visible = 0; //Create a new workbook $wkb = $excel->Workbooks->Add(); $sheet = $wkb->Worksheets(1); //This code adds the text 'Test' on row 2, column 4 $sheet->activate; $files=array(); $a=1; function recursedir($BASEDIR) { global $files; $ext = array("html"); $files = array(); $hndl=opendir($BASEDIR); while($file=readdir($hndl)) { for($i=0;$i if(strstr($file, ".".$ext[$i])) $files[]=$file; } return $files; } // задаём директорию с которую нужно парсить $BASEDIR="/1/"; recursedir($BASEDIR); foreach($files as $file){ $fp = file_get_contents($BASEDIR.$file); $fp=str_replace("**","\n \n",$fp); $cell = $sheet->Cells($a,1); $cell->Activate; $cell->value =$fp ; $a++; } $wkb->SaveAs("C:\excel123.xls"); //Quit MS Excel $wkb->Close(false); $excel->Workbooks->Close(); $excel->Quit(); unset($sheet); unset($excel); ?>PHP+Excel быстро генерируем XLS файлы
Изменил: iNeeXT (30.07.2010 / 21:37)
0
минималистичный скрипт статистики)
записывает в файл реферер и к-во переходов (только если юзер пришел с других сайтов)
записывает в файл реферер и к-во переходов (только если юзер пришел с других сайтов)
<? # запись реферера $date = date('d_m_y'); $stat_f = "ref/$date.dat"; if(!file_exists($stat_f)){ file_pu t_contents ($stat_f,"Сайт | Переходов|"); } $ref_f = file($stat_f); $ref_f_str = implode('',$ref_f); foreach($ref_f as $str){ if(!empty($str)){list($ref_ site [],$ref_kol[]) = explode('|',$str);}} if(!empty($_SERVER['HTTP_REFER ER'])){ $refer = parse_url( $_SERVER['HTTP_REF ERER']); if(isset($refer['host']) && $refer['host']!==$_SERVER ['HTTP_HOST']) { if(preg_match('/(.+ )\.(.+ )\.(.{2 ,4 })/',$refer['host'])) {$refer['host'] = substr(strchr($refer ['host'],'.'),1);} $searched = array_search($refer['host'],$re f_site); if($searched == 0 ){ file_put_contents ( $stat_f,$ref_f_str."\n".$refer[ 'host'].'|1 |'); }else{ $ref_f[$searched] = $refer['host'].'|'.($ref_kol [$searched]+1)."|"; file_put_contents($stat_f,impl ode ('',$ref_f));} } } ?>принимаю любую критику
Изменил: Lugaro (01.08.2010 / 19:46)
0
Удаление невалидных символов XML (чаще всего для парсеров API)
<?php function stripInvalidXml($value) { $ret = ""; $current; if (empty($value)) { return $ret; } $length = strlen($value); for ($i=0; $i < $length; $i++) { $current = ord($value{$i}); if (($current == 0x9) || ($current == 0xA) || ($current == 0xD) || (($current >= 0x20) && ($current <= 0xD7FF)) || (($current >= 0xE000) && ($current <= 0xFFFD)) || (($current >= 0x10000) && ($current <= 0x10FFFF))) { $ret .= chr($current); } else { $ret .= " "; } } return $ret; }
Изменил: Azzido (10.08.2010 / 20:47)
Для выполнения действия необходимо авторизоваться!