За последние 24 часа нас посетили 21223 программиста и 1487 роботов. Сейчас ищет 871 программист ...

Как с preg_replace_callback обработать большой файл?

Тема в разделе "Регулярные выражения", создана пользователем nikki4, 25 мар 2020.

  1. nikki4

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

    С нами с:
    31 окт 2009
    Сообщения:
    10
    Симпатии:
    0
    надо изменить во всех текстовых файлах (.ini) систему начисления опыта юнитов в игре на основе их цен.

    Написал следующий код, он работает с файлами менее 7 кб, если открывать файлы большего размера - пустой экран.

    Вопрос как обработать большой файл?

    так файл выводится на экран, даже если большой
    Код (Text):
    1.  
    2. $text = file_get_contents('путь к файлу');
    3. echo '<pre>'.$text.'</pre>';
    но если его обработать регуляркой, то уже не выводится (только большие файлы, маленькие на 1-2 тысячи строк обрабатываются как надо):

    Код (Text):
    1.  
    2. $text = file_get_contents('путь к файлу');
    3.  
    4. function cb($matches)
    5.  
    6.   {return $matches[1].$matches[2].' '.
    7.   '</br> ExperienceValue = '.
    8.   ($matches[2]).' '.
    9.   ($matches[2]*1.1).' '.
    10.   ($matches[2]*1.3).' '.
    11.   ($matches[2]*1.5).' '.
    12.  
    13.   '</br> ExperienceRequired = '.
    14.   ($matches[2]).' '.
    15.   ($matches[2]*2).' '.
    16.   ($matches[2]*3).' '.
    17.   ($matches[2]*4);}
    18.  
    19. echo '<pre>'.preg_replace_callback('/(BuildCost.*)(\d++)/iuU', "cb", $text).'</pre>';
    ps: может пхп вообще не предназначен для работы с файлами где 2-3 тысячи, а то и десятки тысяч строк?
     
  2. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    В файле-словаре - 100 тысяч строк:
    http://russkiyslovar.ru/sostavit-slovo-iz-10-bukv
     
  3. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @nikki4, просто увеличь количество памяти выделяемой скрипту PHP и время выполнения скрипта
     
    nikki4 нравится это.
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.765
    Симпатии:
    1.322
    Адрес:
    Лень
    https://www.php.net/manual/ru/function.parse-ini-file.php
     
    nikki4 нравится это.