![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, starannie rozglądam się w internecie, zanim o cokolwiek tutaj zapytam, bo wiem, że niektóre pytania są banalne, ale od tygodnia staram się rozwiązać problem preg_matcha. Zająłem się parsowaniem logów chatu gry (Minecraft), tak dla czystej przyjemności i w efekcie otrzymuję z logu:
takie coś: Oczywiście wszystko zapisane w tabeli itd. Jak łatwo się domyślić, znajduję znak "<", ">" oraz to co jest między nimi, żeby określić nick, a po spacji wiadomość. Preg_match wygląda tak:
Cały mój misterny plan ugrzązł w tym miejscu (fragment logu):
A mój skrypt parsuje to na takie coś:
Czyli uznaje dalszy ciąg, aż do znaku ">", jako nick, co ciekawe przed faktycznym nickiem dopisując ">", a nie po tym ciągu. Nie mam pojęcia o co chodzi, próbowałem na wiele sposobów ograniczyć występowanie znaku ">", np. przez "{,1}", ale dalej nie chce współpracować. Mam nadzieję, że napisałem jasno i wybaczcie, że się tak rozpisuję, ale chcę, żeby wszystko było jasne, dlatego małe wprowadzenie uznałem za stosowne. Z góry dziękuję za pomoc (IMG:style_emoticons/default/smile.gif) Ten post edytował kovalson 14.08.2012, 22:59:30 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
http://www.php.net/manual/en/reference.pcr...n.modifiers.php
Poszukaj też o PCRE w ogólności, a także o słowach "greedy" i "ungreedy" (oczywiście w kontekście PCRE) @grzes999 w ogólności tak, ale w kontekście wyrażenia "(.*?)" znaczy już zupełnie coś innego (patrz wyżej) Ten post edytował abort 15.08.2012, 09:21:17 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 16:27 |