Cytat
podobno ten przedrostek preg to z perla

?)
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: