![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 12.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
próbuje wyciągnąć nazwę domeny, jednak mam problem z odróżnieniem np. "uk" od "co.uk" W jaki sposób mogę ustawić, by brany był pod uwagę największy znaleziony string, gdy robię normalnego preg_matcha i używam do tego (co.uk|uk) to zawsze wybiera uk, nie ważne czy jest pierwsze, czy drugie na liście... Jest na to jakiś sposób? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 12.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem już tak, jednak nie potrafię wyciągnąć poprawnie całego rozszerzenia gdy występuje co.uk
Przykład dla domeny z samym .uk: Kod <?php function parseUrl($url) { $r = "^(?:(?<start>\w+)://)?"; $r .= "(?<host>(?:(?P<subdomena>[\w\.]+)\.)?" . "(?<domena>\w+)\.(?<extension>(co\.)?uk))"; $r .= "(?::(?<port>\d+))?"; $r .= "(?<path>[\w/]*/(?<file>\w+(?:\.\w+)?)?)?"; $r .= "(?:\?(?<arg>[\w=&]+))?"; $r .= "(?:#(?<anchor>\w+))?"; $r = "!$r!"; // Delimiters preg_match ( $r, $url, $out ); return $out; } echo "<pre>"; print_r ( parseUrl ( 'https://www.test.domeny.uk' ) ); echo "</pre>"; ?> można sprawdzić tutaj: http://sandbox.onlinephpfunctions.com/code...6b541a55b2a07ad - działa ok ale.. przy co.uk już się sypie: http://sandbox.onlinephpfunctions.com/code...01082c63696331e Można jakoś ustawic, by wybierał dłuższego stringa jeśli taki istnieje? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 05:04 |