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

    +164.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    $arr = array('blabla','blabla_1','blabla_2');
    $mask = 'blabla';
    $lenght = strlen($mask);
    $pos = null;
    foreach($arr as $k=>$v)
     {
      $pos = stripos($arr[$k],$mask);
      if(isset($pos))
      {
        $arr[$k] = substr($arr[$k],$pos,$lenght);
      }
     }

    Задача была - удалить в строках все после символа _
    Источник http://www.nulled.ws/showthread.php?t=159950

    Запостил: RolCom, 14 Декабря 2009

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

    • Наверное надо было вот так: list($arr[i],) = explode('_',$arr[i]); ?
      Ответить
      • А регуляркой слабо?
        Ответить
        • Уважаемый guest :), не надо брать других на слабо. Есть свой вариант, так напишите.

          А умение применять регулярные выражения на каждом шагу не делает вам большой чести, ибо давно известно, что во многих случаях это лишнее. Потому что из пушки по воробьям стрелять не экономично! :)
          Ответить
        • к тому же регулярка медленнее
          Ответить
      • Ну да, просто удалить все после символа _ , включаяя сам _.
        >>А регуляркой слабо?
        В такой задаче любой по-моему любой способ достаточно понятен
        >>к тому же регулярка медленнее
        Вариант с explode тоже не быстр, тогда уж substr($str, 0, strpos( $str, '_' )) или PHP-шное strstr($str, '_', true)
        Ответить
    • форыч тут не катит
      Ответить
    • function ur($s) {if (false !== ($p = strpos($s, '_'))) {return substr_replace($s, '', $p);} else {return $s;}} 
      $arr = array_map('ur', $arr);


      Как можно ещё короче без регулярки?
      Ответить
      • foreach ($arr as $key => $val) {if (false !== ($p = strpos($val, '_'))) {$arr[$key] = substr_replace($val, '', $p);}}


        Как ещё короче?
        Ответить
        • $str = strstr($str, '_', true);  //PHP 5.3.0 и выше

          Применить цикле или функции по вкусу.
          Ответить
        • reset(explode('_',$str));
          Ответить

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