"PHP" / Говнокод #11598 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
public function analyse($args) {
    $i = -1;
    $length = 0;
    $pictures = array();

    foreach ($args as $string) {
        switch (trim($string)) {
            case '{':
                $i++;
                $pictures[$i] = new element();
                $length++;
                break;
            case '}':
               break;
           default:
                if (preg_match('/^ {0,}([A-Za-z]{1,})\s{0,}:\s{0,}\'([\S\s]{0,})\';/iu', $string, $matches)) {
                    $pictures[$i]->setProperty($matches[1], $matches[2]);
                }
                break;
        }
    }
    return new container($pictures, $length);
}

Рукопашный парсинг Json-подобного синтаксиса.

Запостил: vistefan vistefan, (Updated )

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

  • Вопрос: зачем нужен JSON-подобный язык, если сам JSON уж проще некуда?
    Ответить
    • иногда нужен, но явно не здесь
      {0,} вместо звёздочки и {1,} вместо плюсика умиляют
      Ответить
      • Я понимаю, если расширить надо (и то спорно), а тут какое-то сужение с извращением.
        Ответить
        • А меня порадовало [\S\s] вместо . 🙂 Короче регулярка сокращается до такой:
          /^ *([a-z]+)\s*:\s*\'(.*)\';/iu
          Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8