![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 4.10.2003 Ostrzeżenie: (0%) ![]() ![]() |
witam
Dopiero zaczynam poznawać php i stanołem na takim temacie . Mam plik acces.log z danymi które mnie interesują , jak pbrać z niego numer IP i odwiedzany adres , (niestety dane te nie występują zawsze po tej samej ilości spacji .oto przykład z loga ( 1 wiersz ) 1065294793.590 434 192.168.0.2 TCP_MISS/200 351 GET http://216.239.59.104/search? - DIRECT/216.239.59.104 text/htm (2 wiersz ) 1065294793.637 55 192.168.0.2 TCP_MISS/200 1995 GET http://idm.hit.gemius.pl/pp_gemius.js - DIRECT/212.75.96.91 będę wdzięczy za pomoc (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat podobno ten przedrostek preg to z perla (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?)
Nie podobno, a napewno. :wink: Cytat JEŻELI MOGE PROSIC O WYJAŚNIENIE TEGO
Znaki | na początku i końcu wyrażenia ograniczają je i poza tym nic nie znaczą. Mogą to być dowolne dwa takie same znaki. Najczęściej wybiera się taki znak, który nie występuje w samym wyrażeniu aby nie trzeba było niepotrzebnie eskejpować. Znak ^ oznacza, że dopasowywanie musi być zaczęte od początku stringa. Wyrażenie w nawiasie (http://[^/]*?) pasuje do ciągu zaczynającego się od http://, po którym występuje dowolnie długi (również pusty) ciąg znaków różnych od / (wyrażenie [^/]*?). Przy czym dopasowanie będzie niezachłanne (znak ?), tzn. dopasowany będzie najkrótszy ciąg spełniający warunki. Znak / za nawiasem oznacza samego siebie czyli wystąpienie slasha w URLu (będzie to slash oddzielający nazwę hosta od ścieżki do pliku ponieważ poprzednie dopasowywanie było niezachłanne). .* dopasowuje dowolny ciąg znaków (również pusty) zachłannie, tzn. dopasowany będzie najdłuższy ciąg spełniający warunki. Znak $ na końcu oznacza że dopasowywany ciąg ma być do końca stringa. Funkcja preg_replace służy do zamiany dopasowanego fragmentu łańcucha na inny. Ponieważ użyliśmy znaczników ^ i $ które dowiązują dopasowywany łańcuch odpowiednio do początku i końca podanego stringa, całość zostanie dopasowana, a więc też i całość zostanie zamieniona. To na co zostanie zamieniony dopasowany fragment określa drugi parametr preg_replace. Wartość 1, obecna w tym przypadku, mówi, że należy wstawić to co się dopasowało w pierwszych (w tym wypadku jedynych) nawiasach wyrażenia (po to były w tym wyrażeniu nawiasy). W konsekwencji zawartość całego stringa $url jest zamieniana na jego początkowy fragment od http:// aż do następnego znaku / wyłącznie. Myślę, że wytłumaczyłem jasno i przejrzyście i zrozumiałeś o co chodzi. :wink: |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 17:41 |