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

Тема в разделе "Как сделать...", создана пользователем t3s, 17 сен 2010.

Статус темы:
Закрыта.
  1. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    663
    Симпатии:
    1.541
    Задача: разбить строку в массив по два слова
    PHP:
    <?
    $string 'тут вам не здесь и здеся не тута';
    $arr = array();
    $t preg_replace_callback('#([\pL-]+\pZ){2}#si'//Для текста UTF-8 заменить модификтатор \i на \u
        
    create_function(
        
    '$match',
        
    'global $arr;
        $arr[] = trim($match[0]);
        return "";'
    ),
        
    $string);
    $arr[] = $t;
    var_dump($arr);
    ?>
     
  2. X-ray

    X-ray Создатель

    Регистр.:
    17 апр 2012
    Сообщения:
    47
    Симпатии:
    152
    Простой расчет КПД пользователей форума:
    Код:
    <?
    $thanks="10"; //Число симпатий
    $post="110";  //Число сообщений
    $xkpd=round(log($post+$thanks)*10);
    echo $xkpd;
    ?>
     
    metal-stroi-komplekt нравится это.
  3. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    659
    Делал для себя, но вдруг кому еще пригодится:
    Код:
    <?php
    header('Content-Type: image/png');
    function hidemail($text) {
    $im = @imagecreate (100, 30)
      or die ("Не удается создать новую картинку!");
    $background_color = imagecolorallocate ($im, 255, 255, 255);
    $text_color = imagecolorallocate ($im, 25, 15, 95);
    imagestring ($im, 12, 5, 5, $text, $text_color);
    return imagepng($im);
    }
    hidemail('dlablabla');
    ?>
     
    yaski, Nei и Шумадан нравится это.
  4. Mc's JeKa

    Mc's JeKa Создатель

    Регистр.:
    14 апр 2007
    Сообщения:
    25
    Симпатии:
    14
    Скрипт парсинга доменов через регулярные выражения на php


    Добавлено latteo:
    По сути это парсер одиночных слов из анкоров в таблице (</td>). Это очень жёсткий парсер и только под конкретный сайт.
     
    Последнее редактирование модератором: 10 май 2014
  5. cruide

    cruide Писатель

    Регистр.:
    25 июл 2012
    Сообщения:
    8
    Симпатии:
    22
    Продолжу тему полезных велосипедов :)
    Совершенно недавно понадобилось мне проверять запрос на ajax.
    То есть, ajax ли запрашивает данные?
    родился очередной веломобиль:

    PHP:
      function is_ajax()
      {
           global 
    $_SERVER;
           
         if( isset(
    $_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) {
             return 
    true
         } else if( isset(
    $_SERVER['X_REQUESTED_WITH']) && $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest' ) {
             return 
    true;
         } else if( isset(
    $_SERVER['HTTP_ACCEPT']) && (false !== strpos($_SERVER['HTTP_ACCEPT'], 'text/x-ajax')) ) {
             return 
    true;
         }
         
         return 
    false;
      }

     
  6. Цуиьфыеук

    Цуиьфыеук Создатель Нарушитель

    Регистр.:
    15 янв 2018
    Сообщения:
    37
    Симпатии:
    19
    Создание снимка структуры каталога в windows и сравнение двух последних снимков
    Код:
    <?php
    function FS($dir){
       //echo "scan $dir\r\n";
       $res_tmp = array();
       $files_tmp = scandir($dir);
       foreach ($files_tmp as $filename){
         if (is_dir($dir.'\\'.$filename)&&($filename!='.')&&($filename!='..'))
         $res_tmp[$filename] = FS($dir.'\\'.$filename);
       }
       foreach ($files_tmp as $filename){
         if (is_file($dir.'\\'.$filename)) $res_tmp[$filename]=array(
           'md5' => md5_file($dir.'\\'.$filename),
           'size' => filesize($dir.'\\'.$filename)
         );
       }
       return $res_tmp;
    }
    function diff($ar1,$ar2){
       $diff = array();
       $diff['+'] = array();
       $diff['-'] = array();
       $diff['*'] = array();
       foreach ($ar1 as $k => $v){
         if (is_array($v)){
           if( !isset($ar2[$k]) )
      $diff['-'][$k] = $v;
           else if ( !is_array($ar2[$k]) )
             $diff['*'][$k] = array('old' => $v, 'new' => $ar2[$k]);
      else {
      $new_diff = diff($v, $ar2[$k]);
      if( !empty($new_diff['+']) )
      $diff['+'][$k] = $new_diff['+'];
             if( !empty($new_diff['-']) )
      $diff['-'][$k] = $new_diff['-'];
             if( !empty($new_diff['*']) )
      $diff['*'][$k] = $new_diff['*'];
      }
         }else
           if( !array_key_exists($k,$ar2) )
             $diff['-'][$k] = $v;
           else if ( $ar2[$k] !== $v )
             $diff['*'][$k] = array('old' => $v, 'new' => $ar2[$k]);
       }
       foreach ($ar2 as $k => $v){
         if( !array_key_exists($k,$ar1) )
           $diff['+'][$k] = $v;
       }
       return $diff;
    }
    $files = array();
    $files = FS('\\\\server\\Share\\Каталог');
    $res = fopen(date("Y-m-d-H-i-s").'.json','a+');
    fwrite($res,json_encode($files));
    fclose($res);
    $reports = glob("*.json");
    rsort($reports);
    if (isset($reports[1])){
       $content1 = file_get_contents($reports[0]);
       $content1 = json_decode($content1, true);
       $content2 = file_get_contents($reports[1]);
       $content2 = json_decode($content2, true);
       $res = fopen($reports[0].'-'.$reports[1].'-diff.txt','w+');
       $diff = diff($content2,$content1);
       fwrite($res,print_r($diff,true));
       fclose($res);
       echo "look report in file ".$reports[0].'-'.$reports[1].'-diff.txt';
    }
    ?>
     
    Последнее редактирование модератором: 23 янв 2018
  7. velwind

    velwind Создатель

    Регистр.:
    25 май 2018
    Сообщения:
    26
    Симпатии:
    7
    $_SERVER и так суперглобальный, global использовать не нужно
    global вообще не нужно использовать, это дурной тон
     
Статус темы:
Закрыта.