1. PHP / Говнокод #6941

    +148

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    <?php
    
    class CodeCounter {
        const MULTILINE_COMMENT = 0x01;
    
        private $dir = null;
        private $ext = null;
    
        public function __construct($dir = '.', $ext = '*') {
            $this->dir = $dir;
            if($ext == '*') {
                $this->ext = "/.*/si";
            } else {
                $e = explode('|', $ext);
                foreach($e as &$ext) {
                    $ext = trim($ext);
                    if($ext == '')
                        unset($ext);
                }
                $r = implode('|', $e);
                $this->ext = "/.*\.({$r})$/si";
            }
    
        }
    
        public function calculate() {
            $lines = 0;
            $args = func_get_args();
            if(count($args) == 0)
                $dir = $this->dir;
            else
                $dir = $args[0];
            if(file_exists($dir) && is_dir($dir)) {
                $list = scandir($dir);
                foreach($list as $item) {
                    if($item == '.' || $item == '..')
                        continue;
                    $fullItem = realpath($dir . DIRECTORY_SEPARATOR . $item);
                    if(is_dir($fullItem)) {
                        $lines += $this->calculate($fullItem);
                    } else {
                        if(preg_match($this->ext, $item)) {
                            echo "Calculating lines in {$fullItem}:  ";
                            $_lines = self::count($fullItem);
                            echo "{$_lines}\n";
                            $lines += $_lines;
                        }
                    }
                }
            }
            return $lines;
        }
    
        private static function count($file) {
            $lines = 0;
            $d = null;
            if(file_exists($file) && ($file = file($file))) {
                foreach($file as $line) {
                    $line = trim($line);
                    if($line == '')
                        continue;
                    if( substr($line, 0, 2) == '//' || //single line comment
                        substr($line, 0, 1) == '#'  || //single line comment
                        substr($line, 0, 2) == '<?' || //php open tag
                        substr($line, 0, 2) == '?>'    //php close tags
                    )
                        continue;
                    if(($pos = strpos('/*', $line)) !== false) {
                        if($pos == 0) {
                            if(strpos('*/', $line, $pos) === false) {
                                $d = self::MULTILINE_COMMENT;
                            }
                        } else {
                            $lines++;
                        }
                        continue;
                    }
                    if($d == self::MULTILINE_COMMENT) {
                        if(strpos('*/', $line) !== false) {
                            $d = null;
                        }
                        continue;
                    }
                    $lines++;
                }
            }
            return $lines;
        }
    }
    
    $counter = new CodeCounter('./amapys', 'php|js');
    $lines = $counter->calculate();
    echo "\nTotal: {$lines} lines\n";

    Автор: POPSuL
    Пхп-шники такие пхп-шники.
    ООП во все поля. Им неведом sed и awk.

    cutwater, 13 Июня 2011

    Комментарии (16)
  2. PHP / Говнокод #6940

    +154

    1. 1
    2. 2
    3. 3
    foreach ($templatedata as $templatedataname=>$templatedatavalue)
    	$$templatedataname = $templatedatavalue;
    include($templatesDir.'/'.$file.'.tpl.php');

    Велошаблонизатор, превращающий пары ключ-значение из массива в локальные переменные шаблона.
    Шаблон - простой php-файл, в нужных местах выводящий полученные значения (реже с какой-либо логикой вроде обработки массива).

    Vindicar, 13 Июня 2011

    Комментарии (29)
  3. PHP / Говнокод #6937

    +167

    1. 1
    $r = $this->client->getBerechneteGrundversorgungsTarifebyPLZundVerbrauchKundenart($this->params);

    По сути не говнокод, но нечитабельность налицо...

    vov4ik, 13 Июня 2011

    Комментарии (41)
  4. PHP / Говнокод #6933

    +164

    1. 1
    2. 2
    3. 3
    foreach ($params as $k => $v) {
                eval('$this->' . $k . ' = $v;');
            }

    Yurik, 12 Июня 2011

    Комментарии (3)
  5. PHP / Говнокод #6931

    +158

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    //Отображеие меню
    	$arr = get("select max(depth) as d from ".DP."docs");
    	$to = $arr[0]['d'];
    
    	$a = get("select * from ".DP."docs where depth='0' order by prior");
    	$arr = $a;
    	for($i=0;$i<=$to;$i++)
    	{
    		$a = get("select * from ".DP."docs where depth='".$i."' order by prior");
    		if(is_array($a))
    		foreach($a as $key=>$value)
    		{
    			$b = array();$af = array();$bf = array();
    			$b = get("select * from ".DP."docs where pid='".$a[$key]['id']."' order by prior");
    			if(!$b)$b = array();
    			$before = true;
    			//поиск в массиве
    			foreach($arr as $key2=>$value2)
    			{
    				if($arr[$key2]['id'] != $a[$key]['id'] and $before) $bf[] = $arr[$key2];
    				if($arr[$key2]['id'] == $a[$key]['id'] ){ $bf[] = $arr[$key2]; $before=false;}
    				if($arr[$key2]['id'] != $a[$key]['id'] and !$before) $af[] = $arr[$key2];
    			}
    			$arr = array_merge($bf,$b,$af);
    		}
    	}

    построение дерева сайта. хотя может я не разобрался, весь код пестрит такими перлами.

    com1, 12 Июня 2011

    Комментарии (23)
  6. PHP / Говнокод #6928

    +171

    1. 1
    2. 2
    3. 3
    4. 4
    while(strlen($_SESSION["log"])) $_SESSION["log"]= substr($_SESSION["log"],0,-1);
            while(strlen($_SESSION["pass"])) $_SESSION["pass"]= substr($_SESSION["pass"],0,-1);
            unset($_SESSION["log"]);
            unset($_SESSION["pass"]);

    govnoacc, 11 Июня 2011

    Комментарии (10)
  7. PHP / Говнокод #6927

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    function strlen2($str)
    {
    $rus=array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
    return strlen(str_replace($rus, '0', $str));
    }

    jQuery, 11 Июня 2011

    Комментарии (8)
  8. PHP / Говнокод #6923

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function timesec($str) 
    { 
    $h = date("H", strtotime($str)); 
    $i = date("i", strtotime($str)); 
    $s = date("s", strtotime($str)); 
    $m = date("m", strtotime($str)); 
    $d = date("d", strtotime($str)); 
    $y = date("Y", strtotime($str)); 
    return mktime($h, $i, $s, $m, $d, $y); 
    }

    GoodTalkBot, 10 Июня 2011

    Комментарии (10)
  9. PHP / Говнокод #6922

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    class Template{
    	var $result,$template_dir="templates";
    	function ParseTemplate($template,$var_name,$value){
    		$out=preg_replace("/$var_name/i","$value",$template);
    		return $out;
    	}
    	function ClearTemplate($var){
    		$var=str_replace("\n","",$var);
    		$var=str_replace("\t","",$var);
    		$var=str_replace("\r","",$var);
    		$var=str_replace("   "," ",$var);
    		$var=str_replace(">  <","><",$var);
    		return $var;
    	}
    	function Template ($values=array(),$template_name="body.html",$body="",$dir="") {
    		$this->template_dir=PATH_TO_TEMPLATES;
    		if (!$body) $body=file_get_contents($this->template_dir."/".$template_name);
    		if ($values) foreach ($values as $name => $value) {
    			$body=$this->ParseTemplate($body,$name, $value);
    		}
    		$this->result=$body;
    	}
    }

    Пришел к нам сайт на обслуживание... Как-бы шаблонизатор... )))

    nethak, 10 Июня 2011

    Комментарии (9)
  10. PHP / Говнокод #6920

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    $count = count($xml_array["TITLE"])-1; //считаем число проходов цикла.     
    for ($i=0; $i < $count; $i++) {
            echo $element[$xml_array["TITLE"][$i+1]]["value"];     //выводим название книги
            echo $element[$xml_array["AUTHOR"][$i+1]]["value"];  //выводим автора книги
            echo $element[$xml_array["YEAR"][$i+1]]["value"];     //выводим год
    }

    http://www.3mind.ru/programming/53-xml-i-php-parsing-dlya-chaynikov.html
    Из примера про парсинг XML... я один вижу индусский код ?

    Arris, 10 Июня 2011

    Комментарии (8)