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

    +177

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if (preg_replace("/[\D]+/" , '', $word)) {
     $word = str_replace('.','',$word);
     $word = str_replace(',','',$word);
     $word = str_replace(' ','',$word);
     $word = str_replace('$','',$word);
     $word = str_replace('*','',$word);
    }

    Увидев первую строчку я уж обрадовался, оказалось рано.

    Запостил: Daemonium, 29 Ноября 2011

    Комментарии (11) RSS

    • показать все, что скрытоКод Говно / Автор Мудак
      Ответить
    • попробую-ка я регулярки?
      пля, не сработало, да ну их нах, буду строки реплейсить
      Ответить
      • Как вариант, человек решил реплейсить точку, а у неё специальное значение. Потыкался, придумал костыль.
        Ответить
    • Здесь какое-то очень странное условие, и было бы интересно увидеть этот код в контексте. Код в условии и в теле занимаются разными вещами.
      Что касается preg_replace и str_replace, то даже несколько str_replace будут работать быстрее одного preg_replace.
      А квадратные скобки и плюс в регулярке - к чему это?
      Ответить
      • В контексте там еще чуднее,
        function print_dot($M, $name) {
        
         if ($name == 'price' or $name == 'water_massa') {
          if ($name == 'water_massa')
           $M[$name] = preg_replace("/[\D]+/" , '', $M[$name]);
        
          $ARR = explode(' ', $M[$name]);
          $RET = array();
        
          foreach ($ARR as $word) {
        
           if (preg_replace("/[\D]+/" , '', $word)) {
            $word = str_replace('.','',$word);
            $word = str_replace(',','',$word);
            $word = str_replace(' ','',$word);
            $word = str_replace('$','',$word);
            $word = str_replace('*','',$word);
            $word = substr($word, 0,(strlen($word)-3)).'.'.substr($word, (strlen($word)-3),99);
            if (strlen($word)>7) {
             $word = substr($word, 0,(strlen($word)-7)).'.'.substr($word, (strlen($word)-7),99);
            }
            $RET[] = $word;
           } else {
            $RET[] = $word;
           }
        
          }
          $ret = implode(' ', $RET);
          if (strlen($ret)<=4 and str_replace('.','',$ret) != $ret) {
           $ret = str_replace('.','',$ret);
          }
          return $ret;
         }
         return $M[$name];
        
        }
        Ответить
    • ($name == 'price' or $name == 'water_massa') {
      if ($name == 'water_massa')
      +1
      Ответить

    Добавить комментарий