ФорумПрограммированиеPHP для идиотов → Regexp. распознаём переменную

Regexp. распознаём переменную

  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 10:45


    <?php

    define('DBL_STR', '"(?:[^\\\\"]+|\\\\.)*"');
    define('SGL_STR', '\'(?:[^\\\\\']+|\\\\.)*\'');
    define('DECIMAL', '(?:[-+]?[0-9\.]+)');
    define('HEX', '(?:0x[0-9a-fA-F]+)');

    define('RVAL', HEX.'|'.DECIMAL.'|'.DBL_STR.'|'.SGL_STR);
    define('LVAL', '(?:\$[a-zA-Z_](?:[a-zA-Z_0-9]+)?(?:\[\s*(?:'.RVAL.')\s*\])*)');

    $text = '$arr[\'abc\'][ -23 ]';

    header('Content-type: text/plain');

    if (preg_match('/^' . LVAL . '$/', $text, $matches)) {
    print_r($matches);
    } else {
    echo 'Didn\'t match';
    }


    Эта шняга правильно понимает $arr['abc'][ -23 ], но не справится с $arr['abc'][$x]. Здесь не хватает рекурсивного определения.

    Help!
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 11:04, спустя 19 минут 11 секунд

    artoodetoo, ты чо, решил регулярки изучить? )))))))))))))))))))))
    Спустя 25 сек.
    они настолько страшные, что мне кажется что ты их гдето спизидил
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 16 октября 2010 г. 11:10, спустя 5 минут 28 секунд

    м.б. лучше как-то через http://php.net/manual/en/function.token-get-all.php ?
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 16 октября 2010 г. 11:10, спустя 6 секунд

    я ебу.
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 16 октября 2010 г. 11:39, спустя 29 минут 10 секунд

    token_get_all прекрасная штука. Когда-то васяц подогнал идею и я её использую на практике. Для форумного движка через token* написал проверку отсутствующих или неиспользуемых фраз. https://fluxbb.qb7.ru/forum/viewtopic.php?id=3229

    но эта тема про регулярку
    Спустя 102 сек.
    phpdude, да, определение строки с эскейпами \* спиздил из книжки Mastering Regular Expression. Поэтому верю – оно быстрое )))
    ιιlllιlllι унц-унц
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 17 октября 2010 г. 7:52, спустя 20 часов 12 минут 34 секунды

    [^\\\\"]+[/code]
    вот это херня, кажись… он не будет искать кучку "не" бэкслэшей, он будет искать "не" бэкслэш или "не" кавычку…
    Высокоуровневое абстрактное говно
  • artoodetoo

    Сообщения: 5140 Репутация: N Группа: в ухо

    Spritz 17 октября 2010 г. 8:48, спустя 55 минут 50 секунд

    и таки что? читать ты умеешь ))) теперь скажи почему это херня
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!