Стандартные решения (велосипеды)

Статус
В этой теме нельзя размещать новые ответы.

Extalionez

Клоун
Регистрация
21 Авг 2008
Сообщения
368
Реакции
191
  • Заблокирован
  • #21
получение user агента загрузившего страницу + простенький фильтр от назойливого спам бота
А вот велосипедик, который рандомно подставляет user агента(спёр с Для просмотра ссылки Войди или Зарегистрируйся)
PHP:
<?php
    function chooseBrowser($type = NULL)
    {
        $kht = '(KHTML, like Gecko)';
        $awk = 'AppleWebKit/';
        $moz = 'Mozilla';
        $win = 'Windows';
        $chr = 'Chrome';
        $saf = 'Safari';
        $ubu = 'Ubuntu';
        $lin = 'Linux';
        $mac = 'Macintosh';
        $ium = 'Chromium';
        $ope = 'Opera';
        $pre = 'Presto';
        $com = 'compatible';
        $mcp = 'Media Center PC';
        $ncl = '.NET CLR';
 
        $browsers = array(
            'chrome' => array(
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.872.0 '.$saf.'/535.2',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.864.0 '.$saf.'/535.2',
                $moz.'/5.0 ('.$win.' NT 6.1) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.861.0 '.$saf.'/535.2',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_7_0) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.861.0 '.$saf.'/535.2',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_8) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.861.0 '.$saf.'/535.2',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.2 '.$kht.' '.$chr.'/15.0.860.0 '.$saf.'/535.2',
                $moz.'/5.0 (X11; '.$lin.' x86_64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.824.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.815.10913 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.815.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.814.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.813.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.2) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.813.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.813.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_7) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.813.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.812.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.811.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.810.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.810.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.809.0 '.$saf.'/535.1',
                $moz.'/5.0 (X11; '.$lin.' x86_64) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.803.0 '.$saf.'/535.1',
                $moz.'/5.0 (X11; '.$lin.' i686) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.803.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_7_0) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.803.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_7) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.803.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_5_8) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.803.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.801.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_5_8) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.801.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.2) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.794.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_7_0) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.794.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.0) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.792.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.2) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.792.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.792.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; PPC Mac OS X 10_6_7) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.790.0 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_7) '.$awk.'535.1 '.$kht.' '.$chr.'/14.0.790.0 '.$saf.'/535.1',
                $moz.'/5.0 (X11; CrOS i686 13.587.48) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.43 '.$saf.'/535.1',
                $moz.'/5.0 Slackware/13.37 (X11; U; '.$lin.' x86_64; en-US) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41',
                $moz.'/5.0 Arch'.$lin.' (X11; '.$lin.' x86_64) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 (X11; '.$lin.' x86_64) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 (X11; '.$lin.' i686) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.0; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 6.0) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.2; WOW64) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$win.' NT 5.1) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_7) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_3) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1',
                $moz.'/5.0 ('.$mac.'; Intel Mac OS X 10_6_2) '.$awk.'535.1 '.$kht.' '.$chr.'/13.0.782.41 '.$saf.'/535.1'
            ),
            'opera' => array(
                $ope.'/9.80 ('.$win.' NT 6.1; U; es-ES) '.$pre.'/2.9.181 Version/12.00',
                $ope.'/9.80 ('.$win.' NT 5.1; U; en) '.$pre.'/2.9.168 Version/11.51',
                $ope.'/9.80 (X11; '.$lin.' x86_64; U; fr) '.$pre.'/2.9.168 Version/11.50',
                $ope.'/9.80 (X11; '.$lin.' i686; U; hu) '.$pre.'/2.9.168 Version/11.50',
                $ope.'/9.80 (X11; '.$lin.' i686; U; ru) '.$pre.'/2.8.131 Version/11.11',
                $ope.'/9.70 ('.$lin.' ppc64 ; U; en) '.$pre.'/2.2.1',
                $ope.'/9.70 ('.$lin.' i686 ; U; zh-cn) '.$pre.'/2.2.0',
                $ope.'/9.70 ('.$lin.' i686 ; U; en-us) '.$pre.'/2.2.0',
                $ope.'/9.70 ('.$lin.' i686 ; U; en) '.$pre.'/2.2.1',
                $ope.'/9.70 ('.$lin.' i686 ; U; en) '.$pre.'/2.2.0',
                $ope.'/9.70 ('.$lin.' i686 ; U; ; en) '.$pre.'/2.2.1',
                $ope.'/9.70 ('.$lin.' i686 ; U; ; en) '.$pre.'/2.2.1',
                $ope.'/9.64 ('.$win.' NT 5.1; U; en) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; pl) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; hr) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; en-GB) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; en) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; de) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' x86_64; U; cs) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' i686; U; tr) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' i686; U; sv) '.$pre.'/2.1.1',
                $ope.'/9.64 (X11; '.$lin.' i686; U; pl) '.$pre.'/2.1.1',
                $ope.'/9.62 ('.$win.' NT 6.1; U; en) '.$pre.'/2.1.1',
                $ope.'/9.62 ('.$win.' NT 6.1; U; de) '.$pre.'/2.1.1',
                $ope.'/9.62 ('.$win.' NT 6.0; U; pl) '.$pre.'/2.1.1',
                $ope.'/9.62 ('.$win.' NT 6.0; U; nb) '.$pre.'/2.1.1',
                $ope.'/9.62 ('.$win.' NT 6.0; U; en-GB) '.$pre.'/2.1.1'
            ),
            'msie' => array(
                $moz.'/5.0 ('.$win.'; U; MSIE 9.0; Windows NT 9.0; en-US))',
                $moz.'/5.0 ('.$win.'; U; MSIE 9.0; '.$win.' NT 9.0; en-US)',
                $moz.'/5.0 ('.$com.'; MSIE 9.0; '.$win.' NT 7.1; Trident/5.0)',
                $moz.'/5.0 ('.$com.'; MSIE 9.0; '.$win.' NT 6.1; WOW64; Trident/5.0; chromeframe/12.0.742.112)',
                $moz.'/5.0 ('.$com.'; MSIE 8.0; '.$win.' NT 5.2; Trident/4.0; '.$mcp.' 4.0; SLCC1; '.$ncl.' 3.0.04320)',
                $moz.'/5.0 ('.$com.'; MSIE 8.0; '.$win.' NT 5.1; Trident/4.0; '.$ncl.' 1.1.4322; '.$ncl.' 2.0.50727)',
                $moz.'/5.0 ('.$win.'; U; MSIE 6.0; '.$win.' NT 5.1; SV1; '.$ncl.' 2.0.50727)',
                $moz.'/5.0 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1; SV1; '.$ncl.' 2.0.50727)',
                $moz.'/5.0 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1; SV1; '.$ncl.' 1.1.4325)',
                $moz.'/5.0 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1)',
                $moz.'/45.0 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1)',
                $moz.'/4.08 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1)',
                $moz.'/4.01 ('.$com.'; MSIE 6.0; '.$win.' NT 5.1)',
                $moz.'/4.0 (X11; MSIE 6.0; i686; '.$ncl.' 1.1.4322; '.$ncl.' 2.0.50727; FDM)',
                $moz.'/4.0 ('.$win.'; MSIE 6.0; '.$win.' NT 6.0)',
                $moz.'/4.0 ('.$win.'; MSIE 6.0; '.$win.' NT 5.2)',
                $moz.'/4.0 ('.$win.'; MSIE 6.0; '.$win.' NT 5.0)',
                $moz.'/4.0 ('.$win.'; MSIE 6.0; '.$win.' NT 5.1; SV1; '.$ncl.' 2.0.50727)'
            ),
            'firefox' => array(
                $moz.'/5.0 (X11; U; '.$lin.' i586; de; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 (X11; U; '.$lin.' amd64; rv:5.0) Gecko/20100101 Firefox/5.0 (Debian)',
                $moz.'/5.0 (X11; U; '.$lin.' amd64; en-US; rv:5.0) Gecko/20110619 Firefox/5.0',
                $moz.'/5.0 (X11; '.$lin.') Gecko Firefox/5.0',
                $moz.'/5.0 (X11; '.$lin.' x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 FirePHP/0.5',
                $moz.'/5.0 (X11; '.$lin.' x86_64; rv:5.0) Gecko/20100101 Firefox/5.0 Firefox/5.0',
                $moz.'/5.0 (X11; '.$lin.' x86_64) Gecko Firefox/5.0',
                $moz.'/5.0 (X11; '.$lin.' ppc; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 (X11; '.$lin.' AMD64) Gecko Firefox/5.0',
                $moz.'/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 6.2; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 6.1; Win64; x64; rv:5.0) Gecko/20110619 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 6.1; Win64; x64; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 5.2; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 5.1; U; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 5.0; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 ('.$win.' NT 5.0; rv:5.0) Gecko/20100101 Firefox/5.0',
                $moz.'/5.0 (U; '.$win.' NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0'
            )
        );
        if (isset($type))
        {
            $browsers = $browsers[$type];
            return $browsers[rand(0, count($browsers)-1)];
        }
        else
        {
            $allbrowsers = array();
            foreach ($browsers as $browser_type){$allbrowsers = array_merge($allbrowsers, $browser_type);}
            return $allbrowsers[rand(0, count($allbrowsers)-1)];
        }
    }
?>
А вообще Для просмотра ссылки Войди или Зарегистрируйся вам просто громадная библиотека велосипедов. Единственный 'минус' на английском.
 

X-ray

Постоялец
Регистрация
17 Апр 2012
Сообщения
47
Реакции
128
Полезный баян, сверхбыстрое удаление дубликатов строк столбца data (можно указать несколько столбцов) из таблицы Names
Код:
ALTER IGNORE TABLE Names ADD UNIQUE INDEX(data);
 

masp

Создатель
Регистрация
5 Ноя 2008
Сообщения
37
Реакции
0
Функция удаления лишнего HTML который сгенерирован WORDом при копипасте (или експорт HTML)

PHP:
function clearhtmlword($text)
{ // BEGIN function clearhtmlword
    $text = preg_replace
    (
    array(
    // Remove invisible content
    '@<head[^>]*?>.*?</head>@siu',
    '@<style[^>]*?>.*?</style>@siu',
    '@<script[^>]*?.*?</script>@siu',
    '@<object[^>]*?.*?</object>@siu',
    '@<embed[^>]*?.*?</embed>@siu',
    '@<applet[^>]*?.*?</applet>@siu',
    '@<noframes[^>]*?.*?</noframes>@siu',
    '@<noscript[^>]*?.*?</noscript>@siu',
    '@<noembed[^>]*?.*?</noembed>@siu',
 
    // Add line breaks before & after blocks
    '@<((br)|(hr))@iu',
    '@</?((address)|(blockquote)|(center)|(del))@iu',
    '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
    '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
    '@</?((table)|(th)|(td)|(caption))@iu',
    '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
    '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
    '@</?((frameset)|(frame)|(iframe))@iu',),
 
    array(
    ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
    "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
    "\n\$0", "\n\$0",),$text
    )
 
$text = preg_replace('/<!--\[if gte mso 9\]>.*?<!\[endif\]-->/is','',$text);
$text = preg_replace('/<!--\[if gte mso 8\]>.*?<!\[endif\]-->/is','',$text);
$text = preg_replace('/<!--\[if gte mso 10\]>.*?<!\[endif\]-->/is','',$text);
$text = preg_replace('/<!--\[if !mso\]>.*?<!\[endif\]-->/is','',$text);
 
 
  $text = ereg_replace("<(/)?(font|span|del|ins)[^>]*>","",$text); 
  $text = ereg_replace("<([^>]*)(lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)\s>","<\\1>",$text);
  $text = ereg_replace("<([^>]*)(lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$text);
  $text = ereg_replace(" class=\"MsoNormal\" ","",$text);
  $text = preg_replace("'(<\w+)\s{1,}((?:/)?>)'", "$1$2", $text);
  $text = ereg_replace("<([^>]*)(/strong)([^>]*)><([^>]*)(strong)([^>]*)>","\\1",$text);
  $text = preg_replace('/<!--\[if gte mso \d{1,2}+.*\[endif\]-->/si','',$text);   
 
 
 
  return $text;
} // END function clearhtmlword
 

dexgun

Постоялец
Регистрация
26 Сен 2010
Сообщения
63
Реакции
19
  • Заблокирован
  • #24
Скрипт который сделает вотермарки на всех изображениях в указанной вами папке, с указанным ввиде ссылке на изображения вотермарком, и экспортирует все обработанные вотермарки в указанную вами папку (можно исходную, тогда изображения с вотермарками заменят исходные).
PHP:
<?php
 
if ($papkaLogs = opendir("img")) // вместо img пишим путь к вашей папке исходников изображений
{
while ($fileLogs = readdir($papkaLogs))
{
if ($fileLogs != "." && $fileLogs != ".." )
{
 
$watermark = "animechild.png"; // путь к изображению, которое будет нашим вотермарком
$watermarkname = "animechild.png"; // путь к изображению, которое будет нашим вотермарком
$placement = "bottom=2,right=1"; // указываем геометрию размещения и отспуты. bottom=2,right=1 - это означает что вотермарк будет находится "внизу с отсупом 2 пикселя, в правом краю с отступом 1 пиксель.
$original_name = "img2/".$fileLogs; // вместо img пишим путь к вашей папке куда будем экспортировать изображения с вотермарком, можно ипользовать туже что и исходную, тогда все изображения с вотермарками просто заменят исходные изображения
$original = "img/".$fileLogs; // вместо img пишим путь к вашей папке исходников изображений
$info_o = @getImageSize($original);
 
if( ($info_o[0] >= 200) && ($info_o[1] >= 200) ) //лимит по высоте и ширине, по которому скрипт определит необходимость наложения вотермарка на данное изображение
{
$info_w = @getImageSize($watermark);
}
 
list ($vertical, $horizontal) = explode(',', $placement);
list($vertical, $sy) = explode('=', trim($vertical));
list($horizontal, $sx) = explode('=', trim($horizontal));
 
$original = @imageCreateFromString(file_get_contents($original));
$watermark = @imageCreateFromString(file_get_contents($watermark));
 
 
if( ($info_o[0] >= 200) && ($info_o[1] >= 200) ) //лимит по высоте и ширине, по которому скрипт определит необходимость наложения вотермарка на данное изображение
{
$info_w = @getImageSize($watermarkname );
}
 
$out2 = @imageCreateTrueColor($info_o[0],$info_o[1]);
@imageCopy($out2, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);
 
switch (trim($vertical))
{
case 'bottom':
$y = $info_o[1] - $info_w[1] - (int)$sy;
break;
 
case 'middle':
$y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy;
break;
default:
$y = (int)$sy;
break;
}
 
switch (trim($horizontal))
{
case 'right':
$x = $info_o[0] - $info_w[0] - (int)$sx;
break;
case 'center':
$x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx;
break;
default:
$x = (int)$sx;
break;
}
//echo $info_w[0]." ".$info_w[1]." ".$x." ".$y;die;
if( ($info_o[0] >= 200) && ($info_o[1] >= 200) ) //лимит по высоте и ширине, по которому скрипт определит необходимость наложения вотермарка на данное изображение
{
@imageCopy($out2, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
}
 
switch ($info_o[2])
{
case 1:
imagegif($out2,$original_name);
break;
case 2:
imagejpeg($out2,$original_name);
break;
case 3:
imagepng($out2,$original_name);
break;
}
 
@imageDestroy($out2);
@imageDestroy($original);
@imageDestroy($watermark);
 
 
}
}
}
 
 
 
 
?>
 

cruide

Писатель
Регистрация
25 Июл 2012
Сообщения
8
Реакции
22
Присоединюсь к теме "великов"...
Однажды мне понадобилось на некоторых сайта привести HTML в нормальный вид для xHTML.
Почесав свою "репую"... программеры они ведь лентяи :)
Написал вот такую штуку для коррекции HTML.
тоесть там где <br> делаем <br />.
Там где <input type="text"> делаем правильный тег <input type="text" />
Ну и так далее

PHP:
  function xhtml_correction($text)
  {
      if( !empty($text) ) {
          $_ = preg_replace("#\s*(cellspacing|cellpadding|border|width|height|colspan|rowspan)\s*=\s*(\d+)\s*((\%|px)?)(\s*)#si"," $1=\"$2$3\" ", $text);
          $_ = preg_replace("#\s*(align|valign)\s*=\s*(\w+)\s*#si"," $1=\"$2\"", $_);
          $_ = preg_replace("#<(img|input|meta|link|base)\s*(.*?)\s*/?>#is","<$1 $2 />", $_);
          $_ = preg_replace("#<br\s*/?>#is","<br />", $_);
          $_ = preg_replace("#<hr(.*?)\s*/?>#is","<hr$1 />", $_);
          $_ = preg_replace("#\s+>#is",">", $_);
          $_ = preg_replace("#\s*=\s*#is","=", $_);
          return $_;
      }
     
      return '';
  }
 

alexz15

Постоялец
Регистрация
3 Окт 2008
Сообщения
394
Реакции
194
Быстрый поиск файла в поддиректориях.
Тестировался в директории, в которой 45 папок (1, 2,...45), а в них по 900 файлов.
PHP:
function rglob($dir, $file) {
    $files = glob($dir."/[0-9]*/".$file, GLOB_NOSORT);
    if(count($files) > 0) return $files[0];
    else return false;
}
 
// пример
$file = rglob('my_dir', 'search_file.txt');
if ($file) {
    echo 'файл найден';
}
 

stealthdebuger

Механик
Команда форума
Регистрация
25 Авг 2008
Сообщения
681
Реакции
1.684
убираем лишние пробелы и x0D, x0A в строке
PHP:
$s = preg_replace("/(\s){2,}/",' ',$s);

определение кодировки текста (только UTF-8, CP1251)
PHP:
preg_match('#.#u', $s);
 

viktorplus

Постоялец
Регистрация
23 Дек 2007
Сообщения
71
Реакции
17
Возникла задача оптимизировать (проверить починить оптимизировать) все базы данных mysql на сервере. Проверено, работает.
нашел где то в просторах интернета в свое время.
делюсь:



latteo: решение полезное, но очень уж простое да еще и с говнокодом и отдельной темы тем более в разделе php pro совсем не достойно...
 

Mendel

Гуру форума
Регистрация
27 Янв 2008
Сообщения
215
Реакции
65
Писал/отлаживал одну библиотеку.
В процессе отладки получился такой вот класс вывода данных в браузер.
Для продакшн-скриптов не очень подходит, но для всяких тестов, апдейтов данных и прочих скриптов без четкой структуры и с табличками - самое то.
Вызывается как-то так:
PHP:
<?php
require_once 'view.php';
view::start('Это тайтл >>> Тестируем библиотеку');
// **********************************************************
view::head('Это заголовок, чтобы жирно было....');
view::show('Это обычный текстовый блок. Ну так, чтобы не жирно.....');
view::show('Интересно, что этот же метод получив массив, выведет таблицу');
view::head('Собственно таблица:');
// ***********************************************************
$zarplata = array();
$zarplata[] = array('id'=>'1','FIO'=>'Иванов И.И.','work'=>'Директор','money'=>'200');
$zarplata[] = array('id'=>'2','FIO'=>'Прикладов Е.А.','work'=>'Кадровик','money'=>'100');
$zarplata[] = array('id'=>'3','FIO'=>'Шмурдяков М.А.','work'=>'Дворник','money'=>'80');
$zarplata[] = array('id'=>'4','FIO'=>'Чапаев В.И.','work'=>'Охранник','money'=>'75');
$zarplata[] = array('id'=>'5','FIO'=>'Шарапов Ю.Ю.','work'=>'Зоотехник','money'=>'95');
$zarplata[] = array('id'=>'6','FIO'=>'Стервина С.Е.','work'=>'Старший по шлангу','money'=>'50');
$zarplata[] = array('id'=>'7','FIO'=>'Турников Т.А.','work'=>'Тренер','money'=>'100');
$zarplata[] = array('id'=>'8','FIO'=>'Шапокляк Ш.Р.','work'=>'Аниматор','money'=>'150');
$zarplata[] = array('id'=>'9','FIO'=>'Калькуляторова А.И.','work'=>'Бухгалтер','money'=>'200');
$zarplata[] = array('id'=>'10','FIO'=>'Шнобель К.Л.','work'=>'Завуч','money'=>'120');
$zarplata[] = array('id'=>'11','FIO'=>'Крокодилов К.И.','work'=>'Космонавт','money'=>'1200');
$zarplata[] = array('id'=>'12','FIO'=>'Чиновников Ч.К.','work'=>'Скромный служащий','money'=>'10');
view::show($zarplata);
// **********************************************************
view::end();
На выходе довольно читабельный как для генеренного код.
Заточен под UTF-8, но правится легко.
Формат таблиц такой как возвращает база - массив массивов, где каждая строка имеет одинаковые названия полей.

Собственно сам класс:
PHP:
<?php
/**
* Класс вывода табличек и текста. Чисто для тестов.
* В продакшене лучше использовать что-то другое
*
*/
class view {
    public static $start;
    public static function start($title) {
        self::$start = microtime(true);
        header('Content-type: text/html; charset=UTF-8');
        echo('<!DOCTYPE html>'.PHP_EOL);
        echo('<html>'.PHP_EOL);
        echo('    <head>'.PHP_EOL);
        echo('        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'.PHP_EOL);
        echo('        <title>'.$title.'</title>'.PHP_EOL);
        echo('    </head>'.PHP_EOL);
        echo('    <body>'.PHP_EOL);
    }
    public static function end() {
        $t = ceil((microtime(true) - self::$start)*1000)/1000;
        self::show('Выполненно за '.$t.' секунд');
        echo('    </body>'.PHP_EOL);
        echo('</html>');
    }
    public static function head($data) {
        echo(PHP_EOL.'<h2>'.$data.'</h2>'.PHP_EOL);
    }
    public static function show($data) {
        if(!is_array($data)) {
            echo(PHP_EOL.'<br>'.$data.'<br>'.PHP_EOL);
        }
        else {
            if(count($data) == 0) echo(PHP_EOL.'<b>EMPTY array</b><br><br>'.PHP_EOL);
            else {
                // создаем табличку
                $table='';
                $head = array();
                foreach($data as $tmp) {
                    foreach ($tmp as $key => $value) {
                        $head[$key]=$key;
                    }
                    $table.='    <tr><td>'.  implode('</td><td>', $tmp).'</td></tr>'.PHP_EOL;
                }
                $head = '<tr><th>'.implode('</th><th>', $head).'</th></tr>';
                $table = '<table border="1">'.PHP_EOL.$head.PHP_EOL.$table.'</table>'.PHP_EOL;
                echo($table);
            }
        }
    }
}
 

trooll

PHP кодер
Регистрация
22 Дек 2008
Сообщения
482
Реакции
117
На тему слияния массивов. Функция для рекурсивного слияния двух массивов с заменой по одинаковым ключам, а не дописыванием как это делает array_merge_recursive().

Код:
function MergeArrays($Arr1, $Arr2)
{
  foreach($Arr2 as $key => $Value)
  {
    if(array_key_exists($key, $Arr1) && is_array($Value))
      $Arr1[$key] = MergeArrays($Arr1[$key], $Arr2[$key]);
 
    else
      $Arr1[$key] = $Value;
 
  }
 
  return $Arr1;
 
}

Код не мой был наглым образом позаимствован с комментариев на php.net (Для просмотра ссылки Войди или Зарегистрируйся), после не долгих поисков перед началом изобретения велосипеда, в очередной раз убедился что с начало надо проверять паблик на наличие уже имеющегося решения, перед началом изобретения велосипедов.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху