Полезные функции, классы и тд.

Тема в разделе "PHP", создана пользователем zerg, 5 май 2009.

  1. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Скрипт для сохранения поисковых запросов, просто подгузите к движку.
    PHP:
    <?php
    $Domain 
    strtolower($_SERVER['SERVER_NAME']);
    if (
    is_int(strpos($_SERVER['SERVER_NAME'], "www."0))) {
    $Domain =  substr($_SERVER['SERVER_NAME'], 4);
    }
    define('StatFileName'"/home/login/tmp/$Domain-searchwords.txt");

    function 
    GetSearchText() {
    $Result '';
    if (isset(
    $_SERVER['HTTP_REFERER'])) {
    $Ref$_SERVER['HTTP_REFERER'];
    if (!(empty(
    $Ref))) {
    $UrlArray parse_url($Ref);
    if ( 
    $UrlArray['scheme'] == 'http' ) {
    $RefHost $UrlArray['host'];
    $IsGoogle strpos($RefHost'www.google.');
    if ((
    $RefHost == 'search.msn.com')  ||
    is_int($IsGoogle) && ($IsGoogle == 0) )) {
    parse_str($UrlArray['query']);
    $Result=$q;
    } elseif (
    $RefHost == 'www.rambler.ru') {
    parse_str($UrlArray['query']);
    $Result= @iconw("windows-1251""utf-8"$words);
    } elseif (
    $RefHost == 'www.yandex.ru') {
    parse_str($UrlArray['query']);
    $Result $text;
    }
    }  } } 
    if (!empty(
    $Result))  {
    $Result "$RefHost\n$Result\n$_SERVER[REQUEST_URI]\n";
    }
    return 
    $Result;
    }

    //главная часть
    $SearchText GetSearchText();
    if (!empty(
    $SearchText)) {
    // просто добавлю строку в конец файла
    //utf8 boom
    if (!file_exists(StatFileName)) $SearchText "\xEF\xBB\xBF"$SearchText;
    $fd fopenStatFileName"a" );
    fputs ($fd "$SearchText\n"); 
    fclose$fd );
    }
    ?>
    оригинал:
    [HIDE="1"]
    http://blogclient.ru/prostoj-php-skript-dlya-prosmotra-statistiki-poiskovyx-zaprosov.htm[/HIDE]
     
  2. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Open Flash Chart - графики на флеше

    Компонент Open Flash Chart предназначен для вебмастеров, которые хотели бы вставить различного рода графики на свои страницы, и которых на устраивает работы со статическими файлами.

    Open Flash Chart - это свободно распространяемый продукт с открытым кодом. Используя его вы сможете вставить себе на страницу по-настоящему красивые графики самых различных типов. Чтобы использовать Open Flash Chart на своих сайтах достаточно подключить небольшой php-скрипт к своей странице и передать в него массив данных. Стоит отметить что данные могут быть переданы практически из любого источника (текстового файла, php, perl, python или java-скриптов)

    [​IMG]
    [​IMG]

    Скачать:
    [HIDE="10"]http://sourceforge.net/projects/openflashchart/files/[/HIDE]
     
  3. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    PHP-script для удаления всех файлов в заданном каталоге
    Код:
    <?php
    $path = "temp_path";
    $mask = "file_mask"
    $flist = glob($path.$mask);
    foreach($flist as $fname)
    unlink($fname);
    ?>
    
    Функции glob() передаются в качестве параметров путь к каталогу и маска имени файла с расширением. Пусть, например, переменные $path и $mask имеют значения "catalog/" и "*.*", соответственно. Как можно было догадаться, при таком значении маски, как *.*, функцией glob() выбираются все файлы в каталоге catalog/ без разбора. Потом эти файлы удаляются

    ==использую этот код в скрипте кэширования для wordpress
     
  4. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    PHP скрипт для автоматического определения кодировки текста.
    Код:
    <?
    define('LOWERCASE',3);
    define('UPPERCASE',1);
    
    function detect_cyr_charset($str) {
        $charsets = Array(
                          'k' => 0,
                          'w' => 0,
                          'd' => 0,
                          'i' => 0,
                          'm' => 0
                          );
        for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) {
            $char = ord($str[$i]);
            //non-russian characters
            if ($char < 128 || $char > 256) continue;
            
            //CP866
            if (($char > 159 && $char < 176) || ($char > 223 && $char < 242)) 
                $charsets['d']+=LOWERCASE;
            if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE;
            
            //KOI8-R
            if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE;
            if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE;
            
            //WIN-1251
            if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE;
            if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE;
            
            //MAC
            if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE;
            if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE;
            
            //ISO-8859-5
            if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE;
            if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE;
            
        }
        arsort($charsets);
        return key($charsets);
    }
    ?>
    
    источник/демко: http://tony2001.phpclub.net/misc/detect_charset/
     
  5. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    charset_x_win -- Преобразовать строку на русском языке из неизвестной кодировки в кодировку windows-1251
    (Конвертирует строку из неизвестной кодировки в кодировку windows-1251.)
    http://popoff.donetsk.ua/text/work/libs/a/charset/
    сюда исходник кидать не стал...
     
  6. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Определяем строка utf-8 или нет...
    Код:
    /**
       * Returns true if $string is valid UTF-8 and false otherwise.
       *
       * @param mixed $str String to be tested
       * @return boolean
       */
      protected static function is_utf8($str) {
        $c=0; $b=0;
        $bits=0;
        $len=strlen($str);
        for($i=0; $i<$len; $i++){
            $c=ord($str[$i]);
            if($c > 128){
                if(($c >= 254)) return false;
                elseif($c >= 252) $bits=6;
                elseif($c >= 248) $bits=5;
                elseif($c >= 240) $bits=4;
                elseif($c >= 224) $bits=3;
                elseif($c >= 192) $bits=2;
                else return false;
                if(($i+$bits) > $len) return false;
                while($bits > 1){
                    $i++;
                    $b=ord($str[$i]);
                    if($b < 128 || $b > 191) return false;
                    $bits--;
                }
            }
        }
        return true;
    }
     
  7. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    PHP скрипт удаления всех файлов в директории, которые "устарели"
    Код:
    /*!	\brief delete old file in a directory
    *	does not delete files in subdirectories
    */
    $path = 'includes/tmp/';
     
    //age in seconds
    $ageallowed = "1";
     
    $directory = opendir($path);
    while($item = readdir($directory)){
    	if(($item != ".") && ($item != "..")) {
    		if(is_file($path . $item)) {
    			if((time() - getlastmod($path . $item)) > $ageallowed) {
    				unlink($path . $item);
    			}
    		}
    	}
    }
    
     
  8. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Конвертирование слов в спецсимволы
    Код:
    // Convert word special characters
    function word_annihilator ($text){
    	$pattern = array( '/(« )|( »)|(_ )|( _)/' ,
    			  '/_/' ,
    			  '/_/' ,
    			  "#&\#8201;#si" );
    	$replace = array( '"' ,
    			  '\'' ,
    			  '...' ,
    			  "&nbsp;" );
    	$text = preg_replace( $pattern , $replace , $text );
    	return $text;
    }
     
  9. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Рекурсивный chmod
    Код:
    // recursively chmod files to 644 and directories to 755
    function rchmod($dir) {
    	foreach (glob("$dir/*") as $child) { 
    		chmod($child, (is_dir($child)? rchmod($child): 0644)); 
    	}
    	return 0755;
    }
     
    // example on dir "db-images":
    rchmod("./db-images");
    
     
  10. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Бывает ситуация когда нужно сравнить версию php (к примеру когда пользователю нужно вывести на страничке что скрипт будет работать только на php не ниже такой-то версии, а мол у вас такой-то...)
    Код:
    <?php 
        if (strnatcmp(phpversion(),'5.2.10') >= 0) 
        { 
            # equal or newer 
        } 
        else 
        { 
            # not sufficiant 
        } 
    ?>
    
     
  11. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Смена кодировки всех файлов в папке (функция) с utf8 на cp1251 в данном примере
    Код:
    <?php 
    
    function doit($dir='.'){ 
        $d=opendir($dir); 
        while($f=readdir($d)){ 
          if($f!=='.' AND $f!=='..'){ 
            echo $f; 
            if(is_file($dir.'/'.$f)){ 
                echo ' Converting...'; 
    
                $a=file_get_contents($dir.'/'.$f); 
                $a=iconv('UTF-8','WINDOWS-1251',$a); 
                $fp=fopen($dir.'/'.$f,'w'); 
                fwrite($fp,$a); 
                fclose($fp); 
                echo ' - OK<br />'; 
            }elseif(is_dir($dir.'/'.$f)){ 
                echo ' changing dir<br />'; 
                doit($dir.'/'.$f); 
            }else{ 
                echo ' Skipping<br />'; 
            } 
          } 
        } 
    } 
    doit('.'); 
    
    ?>
    
     
  12. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Полезные функции, классы и тд.

    Функция переводит через google api (транслитер) текст.

    PHP:
    function translate($s_text$s_lang$d_lang){
    //$s_text = iconv("windows-1251", "utf-8", $s_text);
    $post_data['q']=$s_text;
    $post_data['langpair']=$s_lang."|".$d_lang;
    $query=http_build_query($post_data);
    $url "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0";
    $c curl_init();
    curl_setopt($cCURLOPT_URL$url);
    curl_setopt($cCURLOPT_RETURNTRANSFER1);
    curl_setopt($cCURLOPT_POST0);
    curl_setopt($cCURLOPT_POSTFIELDS$query);
    $b curl_exec($c);
    curl_close($c);
    $json json_decode($btrue);
    if (
    $json['responseStatus'] != 200)return false;
    return 
    iconv("utf-8""windows-1251"$json['responseData']['translatedText']);
    }

    echo 
    translate("word"'en''ru');
     
  13. zerg

    zerg Administrator Команда форума

    Регистр.:
    18 июл 2008
    Сообщения:
    4.254
    Симпатии:
    3
    Ответ: Полезные функции, классы и тд.

    Скрипт делает ресайзинг (тубы) определенной длинны для файлов всех форматов.

    PHP:
    <?php
    set_time_limit
    (0);

    //if (eregi("^([a-zA-Z0-9]+)+.+([a-z]{3,4})+$",$_GET['file']) && file_exists($_GET['file'])) {
        
    $filename $_GET['file'];
        list(
    $width$height) = getimagesize($filename);
        
    $new_width $_GET['width'];
        
    $new_height $_GET['height'];
        
        
    $tmp_width $width;
        
    $tmp_height $height;
            
        if(
    $tmp_width>$new_width){
        
    $procent=ceil(100/$tmp_width*$new_width)/100;
        
    $tmp_width=ceil($tmp_width*$procent);
        
    $tmp_height=ceil($tmp_height*$procent);
        }
            
        if(
    $tmp_height>$new_height){
        
    $procent=ceil(100/$tmp_height*$new_height)/100;
        
    $tmp_width=ceil($tmp_width*$procent);
        
    $tmp_height=ceil($tmp_height*$procent);
        }
        
        
    $new_width $tmp_width;
        
    $new_height $tmp_height;
        
        unset(
    $procent);
        unset(
    $tmp_width);
        unset(
    $tmp_height);
        
        
    $image_p imagecreatetruecolor($new_width$new_height);
     
        
    $s getimagesize($filename);
        switch(
    strtolower($s['mime'])) {
            case 
    "image/gif"$image imagecreatefromgif($filename); break;
            case 
    "image/jpeg"$image imagecreatefromjpeg($filename); break;
            case 
    "image/png"$image imagecreatefrompng($filename);break;
            default: 
    $image imagecreatefromgif("tmp/noimage.gif"); //здесь замени на свое чтонть.
        
    }
     
        
    imagecopyresampled($image_p$image0000$new_width$new_height$width$height);
        
    //header('Content-type: image/jpeg');
        
    imagejpeg($image_p$_GET['save'], 100);
    //} else {
    //    die();
    //}

    ?>
    Просто передать гет запросом:
    preview.php?width=150&height=200&file=1.gif&save=2.jpg
     
  14. Vch54ti

    Vch54ti Супер-модератор

    Регистр.:
    14 июн 2009
    Сообщения:
    1.454
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    скрипт сортирует на уникальные значения и по алфавиту
    in.txt исходный файл
    out.txt результат:
    Код:
    <?
    
    set_time_limit(0);
    
    echo "loading\n";
    $fruits=file("in.txt");
    echo "loaded\n";
    
    echo "unique start\n";
    $fruits=array_unique($fruits);
    echo "unique stop\n";
    echo "asort start\n";
    asort($fruits);
    echo "asort stop\n";
    //$out='';
    echo "writing\n";
    $wf=fopen("out.txt","a+");
    foreach ($fruits as $key => $val) {
    //if(strlen($val)>15){
    //$f=substr($val,0,7);
    //if($f=='http://'){
    fwrite($wf,trim($val)."\n"); 
    //}
    //$out=$out.trim($val)."\n"; 
    
    //}
    }
    fclose($wf);
    
    //$out=trim($out);
    
    //$wf=fopen("out.txt","a+");
    //fwrite($wf,$out."\n");
    //fclose($wf);
    
    echo "done\n";
    
    ?>
    
     
  15. uin2u

    uin2u New Member

    Регистр.:
    13 авг 2011
    Сообщения:
    5
    Симпатии:
    0
    Ответ: Полезные функции, классы и тд.

    Очень полезные вещи
     

Поделиться этой страницей