Реализовать поддержку именованных подмасок в соответствии с PCRE

Issue #83 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 83 ``` Смотрим секцию NAMED SUBPATTERNS http://www.pcre.org/pcre.txt

Имена подмасок можно использовать как ключи наравне с числами, т.к. типизация в PHP динамическая. ```

Reported by `oasychev` on 2011-12-30 16:13:56

Comments (9)

  1. Oleg Sychev reporter

    Reported by `oasychev` on 2011-12-31 16:55:59 - Labels added: Milestone-Release2.2, Component-Preg

  2. Valeriy Streltsov

    ``` Я предлагаю вместо $subpatternkeys сделать $subpatternmap, где хранить соответствие имя-номер, и работать только с номерами подмасок. Ну и добавить поле $lexemcount в хэндлер и лексер. ```

    Reported by `vostreltsov` on 2012-01-20 06:32:51

  3. Oleg Sychev reporter

    ``` Согласен.

    Есть мнение, что эти поля надо продублировать в matching_results вместе с $str - будут полезны для возврата результатов... ```

    Reported by `oasychev` on 2012-01-20 14:07:50

  4. Oleg Sychev reporter

    ``` Проблему, о которой писали мне в чате, решили? ```

    Reported by `oasychev` on 2012-01-21 16:50:23

  5. Valeriy Streltsov

    ``` Да, решил символы в именах алфивито-циферные, скобки в них не входят... ```

    Reported by `vostreltsov` on 2012-01-21 17:01:37

  6. Oleg Sychev reporter

    ``` Поддержка перенесена на уровень подставки подмасок в обратную связь. Доработаны функции qtype_preg_matching_results для учета именованных подмасок. ```

    Reported by `oasychev` on 2012-01-25 07:43:01 - Status changed: `Done`

  7. Valeriy Streltsov

    ``` У меня вызывает опасение проверка if (is_string($subpattern)) в функциях, связанных с именованными подмасками. Обычные номера хранятся тоже как строки, например, '12' - лексер не переводит их в числа.

    Для решения проблемы я делал в именованных подмасках префикс 'name_'. Поэтому я бы поменял на проверку на strpos(). Или же лексер править на перевод в числа... ```

    Reported by `vostreltsov` on 2012-01-25 08:02:14

  8. Oleg Sychev reporter

    ``` Заменил на array_key_exists($subpattern, $this->subpatternmap)

    Советую решить проблему подобным образом и в других местах... Префикс - пакость ;) ```

    Reported by `oasychev` on 2012-01-25 17:09:50

  9. Log in to comment