Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помощь с регуляркой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Помогите пожалуйста составить регулярку.
Facecontrol
Отправлено: 07 Января, 2021 - 16:59:37
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Здравствуйте! Помогите пожалуйста составить регулярку. Я раньше кое как составлял их но сейчас всё забыл, а восстанавливать знания к сожалению нет времени. В общем есть текстовый файл такого содержания.
Спойлер (Отобразить)



Мне нужно разделить файл так чтобы осталось всё что начинается на
CODE (htmlphp):
скопировать код в буфер обмена
  1. ***** 888poker Hand History for Game

и заканчивается на
CODE (htmlphp):
скопировать код в буфер обмена
  1. collected [ любое значение$ ]


То есть
Спойлер (Отобразить)

Значения могут быть разными, но нужно оставить всё что похоже на выражение выше, а остальное удалить
 
 Top
Строитель Модератор
Отправлено: 07 Января, 2021 - 21:44:55
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




 
 Top
Facecontrol
Отправлено: 07 Января, 2021 - 22:52:57
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:


Ок а использовать её типо так?
PHP:
скопировать код в буфер обмена
  1. preg_match_all('~\*{5} 888poker Hand History for Game.+?collected\h\[[^]]+\]~gs', $r, $w);


Извини за глупый вопрос. Честно уже не помню как раньше это делал.
 
 Top
Строитель Модератор
Отправлено: 07 Января, 2021 - 23:10:29
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
Ок а использовать её типо так?
Без модификатора g, в php роль этого модификатора лежит на preg_match_all()
Спойлер (Отобразить)


Ну и ещё может понадобится для поиска большего количества вариантов подправлять шаблон.
 
 Top
Facecontrol
Отправлено: 07 Января, 2021 - 23:41:44
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol пишет:
Ок а использовать её типо так?
Без модификатора g, в php роль этого модификатора лежит на preg_match_all()
Спойлер (Отобразить)


Ну и ещё может понадобится для поиска большего количества вариантов подправлять шаблон.



Ок. Спасибо работает. А как теперь вывести в браузер все найденые вхождения. Вроде бы через print_r() или нет?
 
 Top
Строитель Модератор
Отправлено: 07 Января, 2021 - 23:42:55
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
Вроде бы через print_r() или нет?
Да. Ну или как в примере выше var_dump($w);
 
 Top
Facecontrol
Отправлено: 07 Января, 2021 - 23:47:38
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol пишет:
Вроде бы через print_r() или нет?
Да. Ну или как в примере выше var_dump($w);

Тогда оно будет выводить в таком стиле
CODE (htmlphp):
скопировать код в буфер обмена
  1. array(1) { [0]=> array(134) { [0]=> string(1098) "***** 888poker Hand History for Game 646168446 ***** 800/1,600 Blinds No Limit Holdem - *** 29 12 2020 03:38:03 Tournament #172727773 Free - Table #494 9 Max (Real Money) Seat 9 is the

А нужно чтоб информация была в чистом виде. Например строка=> выборка
 
 Top
Строитель Модератор
Отправлено: 07 Января, 2021 - 23:51:01
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
Например строка=> выборка
Ну и print_r() будет печатать в браузере некую "служебную" информацию вида array( ... ). Для чистого вывода в браузер используйте цикл foreach(){}.
 
 Top
Facecontrol
Отправлено: 08 Января, 2021 - 00:04:02
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol пишет:
Например строка=> выборка
Ну и print_r() будет печатать в браузере некую "служебную" информацию вида array( ... ). Для чистого вывода в браузер используйте цикл foreach(){}.



Белый флаг
Ага попытался.

PHP:
скопировать код в буфер обмена
  1. $r = file_get_contents('1.txt');
  2. preg_match_all('~\*{5} 888poker Hand History for Game.+?collected\h\[[^]]+\]~s', $r, $w);
  3.  foreach ($w as $value) {
  4. echo "$value<br>";
  5. }


Выдало
Array

Не понял Радость
 
 Top
Строитель Модератор
Отправлено: 08 Января, 2021 - 00:08:28
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol, массив же двухуровневый, значит надо и циклов два:
Спойлер (Отобразить)
 
 Top
Facecontrol
Отправлено: 08 Января, 2021 - 00:16:27
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol, массив же двухуровневый, значит надо и циклов два:
Спойлер (Отобразить)

Ок спасибо. А подскажи ещё такой вопрос. Что сделать чтоб грузило файлы большого размера. Помню когда то были проблемы, при загрузке больших файлов там какое то время ожидания вроде настраивается. Что то вроде этого.
 
 Top
Строитель Модератор
Отправлено: 08 Января, 2021 - 00:24:30
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




Facecontrol пишет:
при загрузке больших файлов там какое то время ожидания вроде настраивается. Что то вроде этого.
Цитата из доки:
По умолчанию максимальный размер загружаемого файла для скриптов PHP составляет 128 мегабайт. Однако вы можете изменить эти ограничения. Например, вы можете установить нижний предел, чтобы пользователи не могли загружать большие файлы на ваш сайт. Для этого измените директивы upload_max_filesize и post_max_size. Ну а время выполнения скрипта можно установить без ограничения: set_time_limit(0);
 
 Top
Facecontrol
Отправлено: 08 Января, 2021 - 00:33:36
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Строитель пишет:
Facecontrol пишет:
при загрузке больших файлов там какое то время ожидания вроде настраивается. Что то вроде этого.
Цитата из доки:
По умолчанию максимальный размер загружаемого файла для скриптов PHP составляет 128 мегабайт. Однако вы можете изменить эти ограничения. Например, вы можете установить нижний предел, чтобы пользователи не могли загружать большие файлы на ваш сайт. Для этого измените директивы upload_max_filesize и post_max_size. Ну а время выполнения скрипта можно установить без ограничения: set_time_limit(0);


Спасибо огромное!!!
 
 Top
Facecontrol
Отправлено: 07 Ноября, 2021 - 16:04:30
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Появился новый вопрос.
Есть регуярка
CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_match_all('~\*{5} 888poker Hand History for Game.+?collected\h\[[^]]+\]~s', $r, $w);


И есть файл с текстом например
Спойлер (Отобразить)

и текстом например
Спойлер (Отобразить)


Мне нужно чтоб регулярка как-то распознала где в тексте есть
CODE (htmlphp):
скопировать код в буфер обмена
  1. ***** 888poker Hand History for Game"любое значение" $2.70 + $0.30"любое значение" collected [любое значение ]

От текста где есть
CODE (htmlphp):
скопировать код в буфер обмена
  1. ***** 888poker Hand History for Game"любое значение" $0.90 + $0.10 "любое значение" collected [любое значение ]

И чтобы текст где есть ($2.70 + $0.30) писался в одну переменную, а текст где присутствует ($0.90 + $0.10) писался в другую переменную.
Как это составить регуляркой?
 
 Top
Facecontrol
Отправлено: 12 Ноября, 2021 - 19:39:34
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Пробовал сделать так
CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_match_all('~\*{5} 888poker Hand History for Game.+?\$2\.70 \+ \$0\.30.+?collected\h\[[^]]+\]~s', $r, $w);

Не получилось оно находит всё равно и текст с $2.70 + $0.30 и текст с $0.90 + $0.10
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB