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

    +149

    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
    mb_internal_encoding('utf-8');
    
    // Внимание, сейчас я покажу вам фокус, который только что открыл.
    
    $request = 'only eng symbols<span class="attention">Здесь могут быть русские символы</span>blah blah blah';
    $request = substr($request, strpos($request, '<span class="attention">'));
    echo mb_substr($request, 0, mb_strpos($request, '</span>')+7);
    
    // Запишем это чуть короче.
    
    $request = 'only eng symbols<span class="attention">Здесь могут быть русские символы</span>blah blah blah';
    echo mb_substr(substr($request, strpos($request, '<span class="attention">')), 0, mb_strpos($request, '</span>')+7);
    
    /* Магия интерпретатора PHP!
    На абсолютно одинаковый код он нам выдает:
    
    <span class="attention">Здесь могут быть русские символы</span>
    <span class="attention">Здесь могут быть русские символы</span>blah blah blah
    */

    Запостил: 7ion, 02 Февраля 2011

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

    • нет там никакой магии. "чуть короче" ошибочно.
      Ответить
      • Где? Подскажите, пожалуйста.
        В таком случае это претендует на новую головоломку из серии "почему не работает".
        Ответить
        • Тху, вот она неочевидность.
          mb_strpos($request, '</span>')+7 во втором примере рассчитывается от целой строки.
          Ответить
        • В первом примере при вызове 2-ой функции $request уже изменено, на во втором, он вызывается из неизмененного $request.
          Ответить
    • Откуда такое можно получить... Видно что выдумано, но кем и где?
      Ответить
    • это еще что. а вот
      <?php
      f(0, $$var);
      $x = 1;
      $y = 2;
      echo $x;
      function f($a, $b) {}

      и
      <?php $d = 2.2250738585072011e-308; ?>
      Ответить
      • 2.2250738585072011e-308 в PHP уже исправили. Зато обнаружили в Java.
        Ответить
        • с шарпом все в порядке?
          Ответить
          • Попробовал в шарпе.

            Посоны! пишу с телефона! :D

            Эм, а что должно случиться?
            Это значение переменной присваивается, на экран выводится, винда не форматнулась.
            Ответить

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