Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Начну:

Код:
 
  function err_handler ($errno, $errstr, $errfile, $errline) {
    global $display_errors;
    if(($errno != E_NOTICE && $errno != E_WARNING) && $display_errors){
      echo '';
    }
  }
  $error_flags = E_ALL & ~E_NOTICE;
  @error_reporting($error_flags);
  @ini_set ('error_reporting', $error_flags);
  $old_error_handler = set_error_handler("err_handler");
 

 
Бывает полезным, убивает все нотайсы, выводы ошибок и прочее.
 
ЗЫ: Желательно прикрепить.



Публикуем решения, а не задаем вопросы!
Тех же, кто этого не понимает, будем БАНИТЬ!  
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.





Цитата:
ЗЫ: Желательно прикрепить.
В ПМ по этому поводу писать надо. — Svarga.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 07:30 26-07-2004 | Исправлено: Cheery, 16:57 25-03-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
от WEBerFAK
Узнаём размер директории со всеми файлами и поддиректориями в ней
Для меня это когда-то была проблемма....

Код:
function gts ($dir)  
  {
      global $size;
       if (is_dir($dir)) {  
       if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
               if (($file!='.') && ($file!='..')) {
                     $f=$_SERVER['DOCUMENT_ROOT']."/$dir/$file";
                     if (filetype($f)=='dir') { gts ("$dir/$file/"); }
                     if (filetype($f)!='dir') { $size=$size+filesize($f); }
               }
         }
       closedir($dh);
    }
 }
}


Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:33 25-01-2006 | Исправлено: Cheery, 23:34 25-01-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
от Ternik:

Код:
function myquery ($query)  
{  
$backtrace = debug_backtrace();  
 
$backtrace = "</b> in : <b>" . $backtrace[0]["file"] . "</b>, on line: <b>" . $backtrace[0]["line"] . "</b>";  
 
$result = mysql_query($query)  
or trigger_error(mysql_errno() . ": <b>" . mysql_error() . $backtrace . format_query($query) , E_USER_ERROR);  
 
return($result);  
}  
 
function format_query ($query)  
{  
return("<p><b>Query was:</b><br/><textarea cols='50' rows='10'>$query</textarea></p>");  
}

 
Любого достает оттачивать SQL запросы, писать в коде "or die", потом искать в чем же ошибка запроса. Данная функция призвана решить проблему вывода ошибки MySQL, для этого все запросы к БД должны делаться через нее, принимает в качестве параметра SQL запрос, возвращает результат, либо выдает подробный отчет об ошибке.

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:38 31-01-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
от Solovjev

Цитата:
Написал свой первый класс для построения временной диаграммы/кривой (например для отображения статистики скачивания файла за последние дни).  
 
<?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();  
?>  
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:29 14-05-2006
vworld



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Склонение существительных с числительными  
 
В русском языке существительные с числительными могут быть в единственном, двойственном и множественном числе: один арбуз, два арбуза, пять арбузов (двойственное число — это почти исчезнувшая в русском языке грамматическая конструкция, встречающаяся только в этом случае).  
<?  
function pluralForm($n, $form1, $form2, $form5)  
{  
$n = abs($n) % 100;  
$n1 = $n % 10;  
if ($n > 10 && $n < 20) return $form5;  
if ($n1 > 1 && $n1 < 5) return $form2;  
if ($n1 == 1) return $form1;  
return $form5;  
}  
 
// пример использования  
echo "В Вашем почтовом ящике $n ".pluralForm($n, "письмо", "письма", "писем");  
?>

Всего записей: 2617 | Зарегистр. 13-02-2003 | Отправлено: 07:32 20-10-2006
LusAvedus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Фильтр чисел. Думаю может в качестве дебюта пойдет.
 

Код:
 
function input_check_numeric($input,$default_value=0) {
   ereg("([0-9]+[0-9]|[0-9]|(\-)[0-9]|(\-)[0-9]+[0-9])",$input,$match);
   return ((!$match) ? $default_value : $match[0]);
   }
 

 
Сильно не пинать регулярные выражения только начал изучать.




И к чему это было приведено?
Вернее - что оно делает? /Cheery/

Всего записей: 2 | Зарегистр. 30-10-2006 | Отправлено: 06:07 30-10-2006 | Исправлено: Cheery, 07:17 30-10-2006
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LusAvedus
дебют не удался - php.net/is_numeric
 
ps: 2.5 это уже не число?
pps: [0-9]+[0-9] эквивалентно [0-9]{2,}
ppps: (-)? чтобы не дублировать по 10 раз

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 12:53 30-10-2006 | Исправлено: zerkms, 12:57 30-10-2006
sTa1kEr



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подсветка PHP синтаксиса на основе шаблонов. Т.е. можно не только html тегами подсветить, но и IB кодами, спец символами для mirc итд. Только для PHP >5 !!! Если что - просьба сильно не пинать. Если кому будет интересно, то могу доробатать его(к примеру можно что-нибудь вроде не сложного анализатора кода сделать или добавить ссылки на пхпшные функции)
Подробнее...

Всего записей: 279 | Зарегистр. 28-07-2005 | Отправлено: 18:43 20-11-2006
hire

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dump данных:
 
Функция dump (кол-во аргументов - любое):

Код:
 
    /**
     * Function for dump variables
     *  
     * @access public
     * @global $_DEBUG
     */
     function dump()
     {
        require_once 'dBug.class.php';
         
         $id = rand();
         
         $init = debug_backtrace();    
         
         $msg = "";
         $lvl = count($init);
         if ($lvl >= 1) {
//             $msg .= "&nbsp;&nbsp;was called from :<BR>";
             for ($k = $lvl-1; $k >= 0; $k--) {
                 $msg .= "&nbsp;[#".$k."] ";
                 
                 if (isset($init[$k]["class"]))
                     $msg .= @$init[$k]["class"]."::";
                     
                 if (isset($init[$k]["function"]))
                     $msg .= @$init[$k]["function"]."() called at ";
                     
                 $msg .= "[/".basename(@$init[$k]["file"]).":".@$init[$k]["line"]."]<BR>";
             }
             
         }
 
         global $_DEBUG;
         
         if (!$_DEBUG) {
             $_DEBUG = 1;
            echo     
                    "<script language='JavaScript'>\n".
                    " show_item=function(evt) { var obj=document.getElementById(evt); if(obj.className == \"\") { obj.className += \" over\"; }else{ obj.className = \"\"; } }\n".
                    "</script>\n";
            echo     "<style>\n";
            echo         "#debug {background-color:#ffffff; margin: 0;}    ".
                         "#debug ul {list-style-type: none; padding: 0 2 0 2; margin: 0;}    ".
                        "#debug li a{text-decoration: none; color: #003366; margin: 0; font-size: 12px;}".
                        "#debug li a:HOVER{color: #FF3300;}".
                        "#debug li ul{ display: none; padding: 2 2 2 2;}".
                        "#debug li ul li {background-color:#ddffdd; padding: 2 2 2 2; margin: 2;}".
                        "#debug li.over ul{display: block;}".
                        "#debug li.over a{color: #000000;;}";                
            echo     "</style>\n";
            
            echo    "<script language='JavaScript'>
                /* code modified from ColdFusion's cfdump code */
                    function dBug_toggleRow(source) {
                        target=(document.all) ? source.parentElement.cells[1] : source.parentNode.lastChild
                        dBug_toggleTarget(target,dBug_toggleSource(source));
                    }
                    
                    function dBug_toggleSource(source) {
                        if (source.style.fontStyle=='italic') {
                            source.style.fontStyle='normal';
                            source.title='click to collapse';
                            return 'open';
                        } else {
                            source.style.fontStyle='italic';
                            source.title='click to expand';
                            return 'closed';
                        }
                    }
                
                    function dBug_toggleTarget(target,switchToState) {
                        target.style.display=(switchToState=='open') ? '' : 'none';
                    }
                
                    function dBug_toggleTable(source) {
                        var switchToState=dBug_toggleSource(source);
                        if(document.all) {
                            var table=source.parentElement.parentElement;
                            for(var i=1;i<table.rows.length;i++) {
                                target=table.rows[i];
                                dBug_toggleTarget(target,switchToState);
                            }
                        }
                        else {
                            var table=source.parentNode.parentNode;
                            for (var i=1;i<table.childNodes.length;i++) {
                                target=table.childNodes[i];
                                if(target.style) {
                                    dBug_toggleTarget(target,switchToState);
                                }
                            }
                        }
                    }
                </script>
                
                <style type='text/css'>
                    table.dBug_array,table.dBug_object,table.dBug_resource,table.dBug_resourceC,table.dBug_xml {
                        font-family:Verdana, Arial, Helvetica, sans-serif; color:#000000; font-size:12px;
                    }
                    
                    .dBug_arrayHeader,
                    .dBug_objectHeader,
                    .dBug_resourceHeader,
                    .dBug_resourceCHeader,
                    .dBug_xmlHeader  
                        { font-weight:bold; color:#FFFFFF; }
                    
                    /* array */
                    table.dBug_array { background-color:#006600; }
                    table.dBug_array td { background-color:#FFFFFF; }
                    table.dBug_array td.dBug_arrayHeader { background-color:#009900; }
                    table.dBug_array td.dBug_arrayKey { background-color:#CCFFCC; }
                    
                    /* object */
                    table.dBug_object { background-color:#0000CC; }
                    table.dBug_object td { background-color:#FFFFFF; }
                    table.dBug_object td.dBug_objectHeader { background-color:#4444CC; }
                    table.dBug_object td.dBug_objectKey { background-color:#CCDDFF; }
                    
                    /* resource */
                    table.dBug_resourceC { background-color:#884488; }
                    table.dBug_resourceC td { background-color:#FFFFFF; }
                    table.dBug_resourceC td.dBug_resourceCHeader { background-color:#AA66AA; }
                    table.dBug_resourceC td.dBug_resourceCKey { background-color:#FFDDFF; }
                    
                    /* resource */
                    table.dBug_resource { background-color:#884488; }
                    table.dBug_resource td { background-color:#FFFFFF; }
                    table.dBug_resource td.dBug_resourceHeader { background-color:#AA66AA; }
                    table.dBug_resource td.dBug_resourceKey { background-color:#FFDDFF; }
                    
                    /* xml */
                    table.dBug_xml { background-color:#888888; }
                    table.dBug_xml td { background-color:#FFFFFF; }
                    table.dBug_xml td.dBug_xmlHeader { background-color:#AAAAAA; }
                    table.dBug_xml td.dBug_xmlKey { background-color:#DDDDDD; }
                </style>";
         }  
         
         echo    "<div id=debug>
                     <ul>
                         <li id=\"".$id."\"><a name=\"".$id."\"></a><a onClick=\"javascript: show_item(".$id.");\" href=\"#".$id."\">".
                        "<b>Dump was called: </b><br>".            
                        $msg.
                        "<b>Variables:<br></b></a>".
                    "<ul>\n";
                    
        foreach (func_get_args() as $var)
        {
            echo "<li>";
            
//            if (is_string($var)) echo "string (".strlen($var)."): ";
            new dBug($var);
            
            echo "</li>\n";
        }
        echo    "</ul></li></ul></div><HR>";
     }
 

 
Использование:

Код:
 
dump($_GET, $classRequest);
 

 
 
Класс dBug (author Kwaku Otchere; modified)
Читать дальше..

Всего записей: 20 | Зарегистр. 21-08-2006 | Отправлено: 09:58 25-11-2006 | Исправлено: hire, 10:11 25-11-2006
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hire
Много буков
 
Исправленный класс dBug
 
Использование:

Код:
 
<?php
require_once("dBug.php");
 
$a = "123";
$b = "456";
 
// Просто вывод
dBug::dump($a, $b);
 
// Вывод и прекращение работы скрипта
dBug::stop($a, $b);
 
?>
 

 
Число аргументов также не ограничено.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 10:43 25-11-2006
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ГЕНЕРАТОР ПАРОЛЕЙ
$length - длина пароля
$dig    - использовать ли цифры (по умолчанию - да)
$lchar  - использовать ли латинские буквы (по умолчанию - да)
$rchar  - использовать ли русские буквы
$symb   - использовать ли дополнительные символы и какие
 

Код:
 
function generate_password($length,$dig=1,$lchar=1,$rchar=0,$symb=''){
    $dig=array(0,1,2,3,4,5,6,7,8,9);
    $rus=array(
    "а","б","в","г","д","е","ж","з","и","к",
    "л","м","н","о","п","р","с","т","у","ф",
    "х","ц","ч","ш","щ","ь","ы","ъ","э","ю",
    "я","ё","й");
    $for=array(
    "a","b","c","d","e","f","g","h","j","k",
    "l","m","n","o","p","q","r","s","t","u",
    "v","w","x","y","z");
    $main=array();
    $dig?$main=array_merge($main,$dig):true;
    $rchar?$main=array_merge($main,$rus):true;
    $lchar?$main=array_merge($main,$for):true;
    !empty($symb)?$main=array_merge($main,explode(' ',$symb)):true;
    shuffle($main);
    return $pass=substr(implode('',$main),0,$length);
}
 

Оптимизитор кода

Код:
 
function optimize_html($s){
    $s=str_replace("\n"," ",$s);
    $s=str_replace("\r"," ",$s);    
    //$s=str_replace("href=\"http://".$_SERVER['HTTP_HOST']."/","/",$s);
    while(strchr($s,"  ")){
        $s=str_replace("  "," ",$s);
    }
    while(strchr($s,"    ")){
        $s=str_replace("    "," ",$s);
    }    
    while(strchr($s,"  ")){
        $s=str_replace("  "," ",$s);
    }    
    return $s;
}
 

 
Функция записи строки в новый файл

Код:
 
function fw_($file,$str){
    $fo=fopen($file,'w+') or die("Не удалось открыть файл");
    if(fwrite($fo,$str)){
        fclose($fo);
        return true;
    }else{
        fclose($fo);
        return false;
    };
}
 

 
Функция дозаписи строки в существующий файл

Код:
 
function fa_($file,$str){
    $fo=fopen($file,'a+') or die("Не удалось открыть файл");
    if(fwrite($fo,$str)){
        fclose($fo);
        return true;
    }else{
        fclose($fo);
        return false;
    };    
}
 

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 23:41 09-12-2006 | Исправлено: andymc, 09:08 10-12-2006
LusAvedus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
LusAvedus
дебют не удался - php.net/is_numeric
 
ps: 2.5 это уже не число?
pps: [0-9]+[0-9] эквивалентно [0-9]{2,}
ppps: (-)? чтобы не дублировать по 10 раз

 
1. is_numeric определяет число или не число. А этот код вырезает число из строки если оно есть.
2. Забыл написать что это все только для целых чисел.
3. За подсказки спасибо,  учу матчасть по регулярным выражениям.

Всего записей: 2 | Зарегистр. 30-10-2006 | Отправлено: 16:03 10-12-2006
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LusAvedus
Чтобы "вырезать число из строки", попробуй eregi_replace("[0-9]*",$input).
Хотя не советую увлекаться регулярами, они выполняются адско медленно
 
 
Добавлено:
Время выполнения скрипта
(другой вариант)
Есть функции (смысл их не важен)

Код:
 
function startTimer(){
    global $starttime;
    $starttime = microtime();
    return $starttime;
}
function endTimer(){
    global $starttime;
    $pageendtime = microtime();
    $starttime2 = explode(" ",$starttime);
    $endtime = explode(" ",$pageendtime);
    $totaltime = $endtime[0]-$starttime2[0]+$endtime[1]-$starttime2[1];
    $totaltime = round($totaltime, 3);
    return $totaltime;
}
 

Начиннаем контроль времени так:

Код:
 
$start_time=startTimer();
$timer=array();
$timer['start']=endTimer();
 

А далее в самых разных точках кода ставим вызов массива $timer['параметр']=endTimer();

Код:
 
$timer['modules']=endTimer();
...
$timer['content']=endTimer();
 

Результат получаем пропечатав массив $timer

Код:
 
echo "<pre style='font-size:10px'>";
print_r($timer);
echo "</pre>";
 

 
Добавлено:
Папка, в которой находится скрипт
полезно для определение папки, в которую установлена программа, при установке

Код:
 
$root_base=str_replace('/'.basename($_SERVER['PHP_SELF']),'',$_SERVER['PHP_SELF']);
$root_dir=str_replace('/','',$root_base);
// $root_dir - требуемая папка
 

 
Выявление робота, зашедшего на сайт (не оптимально, но очевидно)

Код:
 
$is_robot=(strchr($_SERVER['HTTP_USER_AGENT'],'StackRambler') || stristr($_SERVER['HTTP_USER_AGENT'],'Yandex') || strchr($_SERVER['HTTP_USER_AGENT'],'Googlebot') || strchr($_SERVER['HTTP_USER_AGENT'],'Yahoo! Slurp')|| strchr($_SERVER['HTTP_USER_AGENT'],'Mail.ru'));
 


Динамические стили
Есть файл стилей, где используются PHP коды. Определение переменных соответственно в другом месте

Код:
 
....
a:link,  a{text-decoration: none; color: <?php echo $linkColor ?>;}
....
 

Подключаем файл в заголовок

Код:
 
<html><head><style><?php include($dir_images.'/style2.css');?></style>...
 

Дополнительно можно оптимизировать файл стилей, убрать отбивки и пробелы
 
Добавлено:

Создание фактического текущего УРЛ
$_SERVER['HTTP_HOST']=str_replace("www.","",$_SERVER['HTTP_HOST']);
if ($QUERY_STRING!=''){
   $current_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$QUERY_STRING;
} else {
   $current_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
}
 

Извлечение сайта из ссылки
function extract_site($url){
    $part=substr($url,8);
    $end=strchr($part,"/");
    $site=str_replace($end,'',$url)."/";    
    $site=str_replace('www.','',$site);    
    return $site;        
}
 

извлекает из строки подстроку от подстроки $s до подстроки $e
function extract_str($str,$s,$e){
    if (!strchr($str,$s)) return $str;
    $start=strpos($str,$s);
    $end=strpos($str,$e,$start);
    return substr($str,$start,$end-$start);
}
 

Значение параметра строки запроса
// $string - строка запроса (предположительно $QUERY_STRING)
// $name - параметр
function get_query_value($string,$name){
    if (strchr($string,"$name=")){
        $string=substr(strchr($string,"$name="),1+strlen($name));
        if (strchr($string,'&')){
            $string=str_replace(strchr($string,'&'),'',$string);    
        }
        return $string;        
    } else {
        return false;        
    }
}

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 19:45 10-12-2006 | Исправлено: andymc, 21:38 10-12-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andymc
давайте будем писать то, что понимаем?

Цитата:
if ($QUERY_STRING!=''){

не будет установлена при register_globals=off.. при этом в куске используется $_SERVER

Цитата:
Извлечение сайта из ссылки

www.php.net/parse_url

Цитата:
Значение параметра строки запроса

www.php.net/parse_url  + www.php.net/parse_str
 
 
ps: мое высказывание не предполагает его обсуждение в этом топике.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 07:07 12-12-2006
chs52ncm

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Функция скачивающая файл по HTTP на PHP. Срочно. Помогите кто может.
 
 
 
 





У тебя действительно серого вещества не хватает? Прочитай шапку темы. Тут не задают вопросы /Cheery/

Всего записей: 4 | Зарегистр. 01-09-2006 | Отправлено: 14:45 15-12-2006 | Исправлено: Cheery, 15:22 15-12-2006
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разборщик стилей (я так назвал)
Утром сегодня написал код, который разбирает текст стилей либо из файла .css либо встроенных. Надо указать только файл.
Стили помещаются в массив $styles в виде
$a['имя стиля']['параметр']=значение

Код:
 
//$s=file_get_contents('style.css');
$s=file_get_contents("index.htm");
$styles=array();
if (strchr($s,'<style>')){
    $start=strpos($s,'<style>')+7;
    $end=strpos($s,'</style>');
    $s=substr($s,$start,$end-$start);
}
$start=0;
if (substr_count($s,'{')>0&&substr_count($s,'}')>0){    
    while (strchr($s,'{')){
         
        $st0=strpos($s,'{');
        $st1=strpos($s,'}');
        $style_name=trim(substr($s,$start,$st0));
        $style_body=trim(substr($s,$st0+1,$st1-$st0-1));
        $styles[$style_name]=array();        
         
        while (strchr($style_body,':')){            
            $dv=strpos($style_body,':');
            $tz=strpos($style_body,';');
            $name=trim(substr($style_body,0,$dv));
            $value=trim(substr($style_body,$dv+1,$tz-$dv-1));
            $style_body=substr($style_body,$tz+1);
            $styles[$style_name][$name]=$value;
        }
         
        $s=substr($s,$st1+1);
    }
}
print_br($styles);
 

// хочу ещё написать разборщик html  
// разбор стилей мне нужен был, чтобы иметь к ним доступ из PHP (дизайн шаблона)

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 13:25 18-12-2006 | Исправлено: andymc, 13:26 18-12-2006
drew2006

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
перевод текста с русского на английский через translate.ru
используется для получения ЧПУ из русского названия страницы.
 
function translate ($src) {
 
    $ch = curl_init();
 
    curl_setopt($ch, CURLOPT_URL, 'http://www.translate.ru/text.asp');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'status=translate&direction=re&transliterate=ON&source='.urlencode($src));
 
    $html = curl_exec($ch);
    curl_close($ch);
 
    preg_match('|<span id="r_text" name="r_text">(.*?)</span>|s', $html, $rst);
    $rst = strtolower(preg_replace('|[\s]+|', '_', trim($rst[1])));
 
    return $rst;
 
}

Всего записей: 12 | Зарегистр. 28-01-2006 | Отправлено: 21:38 28-12-2006 | Исправлено: drew2006, 21:39 28-12-2006
mctaddy



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
люди дайте серийник




Я могу только предложить банан за несоблюдение правил. Проблемы со зрением? /Cheery/
ps: PHP распространяется бесплатно

Всего записей: 28 | Зарегистр. 20-04-2006 | Отправлено: 00:03 18-01-2007 | Исправлено: Cheery, 00:04 18-01-2007
Jokerjar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Существует ли функция, которая возвращает часть строки после символа "?" в строке адреса (т.е. всю строку параметров)?
 
Извините, не туда задал




Не извиню.. шапку читать надо ! /Cheery/

Всего записей: 591 | Зарегистр. 22-03-2006 | Отправлено: 19:51 21-01-2007 | Исправлено: Cheery, 21:22 21-01-2007
G_Drey_V

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$GLOBALS['HTTP_RAW_GET_DATA'] - должно заработать по аналогии с $GLOBALS['HTTP_RAW_POST_DATA'], хотя насколько я помню, документации по этим переменным я ни разу нигде не встречал что-то наподобие недокументированных констант... хотя на самом деле, по-моему, какой-то из header-переменных это содержит.. попробуй заодно посмотреть print_r($_SERVER)

Всего записей: 158 | Зарегистр. 20-12-2003 | Отправлено: 21:20 21-01-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
G_Drey_V
бр.. первым делом надо смотреть phpinfo();
 
$_SERVER["QUERY_STRING"]
 
 
 
ps: чувствую, что пора банить тех, кто постит тут не по делу

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:24 21-01-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru