За последние 24 часа нас посетил 17071 программист и 1343 робота. Сейчас ищут 1545 программистов ...

Функция preg_match_all

Тема в разделе "Регулярные выражения", создана пользователем Denis_56, 29 окт 2006.

Статус темы:
Закрыта.
  1. Denis_56

    Denis_56 Активный пользователь

    С нами с:
    29 окт 2006
    Сообщения:
    2
    Симпатии:
    0
    Подскажите пожалуйста, как с помощью функции preg_match_all подсчитать количество знаков «ввод» в тексте, следующий синтаксис не дал результата.

    preg_match_all("[\\n]",$text,$i)
     
  2. лично я бы "количество знаков «ввод»" считал бы функцией substr_count()

    а что именно с preg_match_all не получилось?
     
  3. Denis_56

    Denis_56 Активный пользователь

    С нами с:
    29 окт 2006
    Сообщения:
    2
    Симпатии:
    0
    это я косяк упорол, фуекция strlen() считает знак "ввода" как элемента, а preg_match_all все правильно считает

    Вопрос снят
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Метод развратный и считает не точно, но работает :)
    PHP:
    1. <?php
    2. $num = count(explode("\n", $text));
    3. ?>
     
  5. что значит "фуекция strlen() считает знак "ввода" как элемента"?
    какого элемента? как она его считает?
     
  6. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    а зачем тогда такое надо? :)
     
  7. Belegnar

    Belegnar Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    299
    Симпатии:
    0
    Исторически. :)
     
  8. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    simpson
    Считает он точно, просто ошибается на еденицу (думаю не надо объяснять почему) а надо это потому что работает быстрее чем preg_match_all
     
  9. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    не надо.
    согласен. искать регулярным выражением константное значение - вообще глупость. но и твоему способу есть достойный оппонент (о котором уже сказал Чебурген) - substr_count.
     
  10. я бы не был столь категоричен со столь спорными утверждениями.........

    И дело здесь не в той микроскопической разнице, о которой я часто говорю и которую многие не понимают, а именно в абсолютных цифрах.
    Настоятельно рекомендую лишний раз проверить свои выкладки.
    Подумав над данной конкретной задачей, а не сделалав бездумный вывод из аксиомы "строки быстрее регов".
     
  11. Davil

    Davil Guest

    Вот ты и сам сказал, что это аксиома. Но вот быстрее на сколько? На одну сотую секунды? Возможно я готов подождать эту одну сотую секунды...
     
  12. Anonymous

    Anonymous Guest

    Мое имхо по данному вопросу:
    Чебурген прав. В большинстве случаев, разница между регуляркой и строковыми функциями по скорости неокупаема. Однако, когда речь идет о работе с большими кусками текста, скорость работы регов падает ощутимо. Более чем ощутимо - у меня был парсинг примерно 6 метрового файла с регулярной структурой - дамп данных по соединениям с АТС, происходил раз в сутки. Скорость работы регуляркой ~18 сек. Скорость работы строковыми функциями ~7 сек. Потом, при опытной эксплуатации, стали обрабатыватся все файлы от всех АТС, и чаще - вот тут то и вылезла излишняя нагрузка боком - почти полчаса(!) разницы на каждый проход раз в 6 часов.
     
  13. Anonymous

    Anonymous Guest

    PS. А вы подумайте, если бы файл не имел выраженной структуры, и регулярка была бы сложней? Во сколько минут бы это вылилось?
    Поэтому - каждому случаю - свой инструмент.
     
  14. Сейчас я говорю немного о другом.
    Пусть даже файл не в 6 мегабайт, а а 600 килобайт.
    всё равно, распихать весь этот файл в массив будет дольше, чем пробежать по нему примитивным регом, который ищет, как здесь уже говорилось, константу.
    Вы зря недооцениваете вылизанность оптимизации регулярных выражений.
    И зря недооцениваете накладные расходы пхп при работе с массивами.
    (Ну, и для совсем буквоедов - вы зря сравниваете массив из одиночных символов с массивом полновесных строк)
     
  15. Anonymous

    Anonymous Guest

    Чебурген, так и я о чем. в 95% случаев регвыры себя окупают простотой использования. Но для себя нужно знать, что если вопрос скорости встанет - строковые все равно быстрей.
    // PS. Перенес тему в рег.выры, где ей, имхо, и место..
     
  16. Davil

    Davil Guest

    Апсолютно согласен. При разработке серьезных проектов просто необходимо выбирать скорость, иногда даже в убыток простоте.
     
  17. Anonymous

    Anonymous Guest

    Davil, вопрос даже не в серьезности самого проекта, а в требовательности конкретного действия к соотношению обьем/скорость.
    Рег.выры берегут немало сил, этого у них не отнять.

    // Флуд почистил, тему закрыл. Ибо .... (ц)
     
Статус темы:
Закрыта.