Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne - LINK - dane wyjściowe
Forum PHP.pl > Forum > Przedszkole
twardes
Witam wszystkich

Walczę już jakiś czas z takim oto problemem.

Chcę ze stringów typu:
http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar (link z oznaczeniem protokołu)
rapidshare.com/files/114812788/TFK-aXXo.part7.rar
>http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar<
"http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar"
bleblabluhttp://rapidshare.com/files/114812788/TFK-aXXo.part7.rar


lub to samo z subdomeną www

http://www.rapidshare.com/files/114812788/TFK-aXXo.part7.rar (link z oznaczeniem protokołu)
www.rapidshare.com/files/114812788/TFK-aXXo.part7.rar
>http://www.rapidshare.com/files/114812788/TFK-aXXo.part7.rar<
"http://www.rapidshare.com/files/114812788/TFK-aXXo.part7.rar"
bleblabluhttp://www.rapidshare.com/files/114812788/TFK-aXXo.part7.rar


lub zawierających domenę (rapidsearch.de)



"wyciągnąć" takie części linku:


Kod
                    
                     http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar
                       1   |       2      |  3  |    4    |       5      | 6


1 - oznaczenie protokołu
2 - domenę
3 - wirtualny katalog
4 - zapewne ID
5 - nazwę pliku
6 - rozszerzenie

wszystkie najchętniej bez ukośników ale nie jest to konieczne

najbardziej mi zależy na:

1+2+3+4+5+6 (całość)
2+3+4+5+6 (link bez http://)
2 (domenie rapidsearch.com lub rapidsearch.de)
4 (numerze ID)
5 (sama nazwa pliku)
5+6 (nazwa pliku)
6 (rozszerzenie)

mam już całkiem niezłe, jednak niewystarczające wyrażenie pobierające 2 interesujące mnie zmienne do tablicy
Kod
preg_match('/[http\:\/\/rapidshare\.com\/files\/][0-9]+[\/]([A-Za-z0-9\-\_\.\,\+]+)/',$data,$disp);


modyfikuje to to na różne sposoby ale chyba już zbyt zmęczony jestem, proszę o podpowiedzi
Crozin
Protokołu nie potrzebujesz. Raz że zawsze jest to HTTP, dwa że nie zawsze występuje w podanych wzorcach. Pisane z palca:
Kod
#(rapidshare\.(?:de|com))/files/(\d+)/([^\.]+)\.([a-z]+)#i
Wicepsik
  1. <?php
  2. $zmienna = "http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar";
  3. preg_match_all('/(.*)://(.*)/(.*)/(.*)/(.*).([a-z]{3,})/', $uptime, $matches3);
  4.  
  5. echo '<pre>';
  6. print_r($matches3);
  7. echo '</pre>';
  8. ?>


Kod
Array
(
    [0] => Array
        (
            [0] => http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar
        )

    [1] => Array
        (
            [0] => http
        )

    [2] => Array
        (
            [0] => rapidshare.com
        )

    [3] => Array
        (
            [0] => files
        )

    [4] => Array
        (
            [0] => 114812788
        )

    [5] => Array
        (
            [0] => TFK-aXXo.part7
        )

    [6] => Array
        (
            [0] => rar
        )

)
Crozin
@Wicepsik: rozszerzenia plików mogą być nawet jednoznakowe.
Wicepsik
@up
Racja.


  1. <?php
  2. $uptime = "http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar";
  3. preg_match_all('/(.*)://(.*).(.*)/(.*)/(.*)/(.*).([a-z]{1,6})/', $uptime, $matches3);
  4. ?>


Kod
Array
(
    [0] => Array
        (
            [0] => http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar
        )

    [1] => Array
        (
            [0] => http
        )

    [2] => Array
        (
            [0] => rapidshare
        )

    [3] => Array
        (
            [0] => com
        )

    [4] => Array
        (
            [0] => files
        )

    [5] => Array
        (
            [0] => 114812788
        )

    [6] => Array
        (
            [0] => TFK-aXXo.part7
        )

    [7] => Array
        (
            [0] => rar
        )

)
pyro
@Wicepsik, więcej niż 3-znakowe też..
Wicepsik
Cytat(pyro @ 17.05.2009, 22:45:43 ) *
@Wicepsik, więcej niż 3-znakowe też..

Nie znam się na rozszerzeniach plików. Niech sobie zmieni wstydnis.gif
pyro
Poprostu wystarczy {1,} smile.gif
twardes
Tylko nie napisałem że ma spełniać wzorzec linku...

zgodnie z twoim wzorem moglby to być też
hfdad://ghdafh/hfda/fhad/jsf/.rdg


Cytat(Wicepsik @ 17.05.2009, 22:20:04 ) *
  1. <?php
  2. $zmienna = &#092;"http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar\";
  3. preg_match_all('/(.*)://(.*)/(.*)/(.*)/(.*).([a-z]{3,})/', $uptime, $matches3);
  4.  
  5. echo '';
  6. print_r($matches3);
  7. echo '';
  8. ?>


Kod
Array
(
     [0] => Array
         (
             [0] => http://rapidshare.com/files/114812788/TFK-aXXo.part7.rar
         )

     [1] => Array
         (
             [0] => http
         )

     [2] => Array
         (
             [0] => rapidshare.com
         )

     [3] => Array
         (
             [0] => files
         )

     [4] => Array
         (
             [0] => 114812788
         )

     [5] => Array
         (
             [0] => TFK-aXXo.part7
         )

     [6] => Array
         (
             [0] => rar
         )

)


Cytat(Crozin @ 17.05.2009, 22:15:57 ) *
Protokołu nie potrzebujesz. Raz że zawsze jest to HTTP, dwa że nie zawsze występuje w podanych wzorcach. Pisane z palca:
Kod
#(rapidshare\.(?:de|com))/files/(\d+)/([^\.]+)\.([a-z]+)#i




Dziękuję, po minimalnych modyfikacjach dostałem co chciałem
Kod
(rapidshare\.(?:com|de))\/files\/(([0-9]+)\/(([A-Za-z0-9\-\_\.\,\+]+)\.([A-Za-z0-9]+)))
Crozin
Czytając
Cytat
Poprostu wystarczy {1,}
Naszło mnie
Pamiętaj, że rozszerzenia pliku może w ogóle nie być. W końcu plik o nazwie "helloWorld" jest tak samo poprawny jak "helloWorld.whatever"

@pyro: {1,} to poprostu + winksmiley.jpg
pyro
Cytat(Crozin @ 17.05.2009, 23:25:31 ) *
CzytającNaszło mnie
Pamiętaj, że rozszerzenia pliku może w ogóle nie być. W końcu plik o nazwie "helloWorld" jest tak samo poprawny jak "helloWorld.whatever"

@pyro: {1,} to poprostu + winksmiley.jpg


Tak to jest, jak się kodzi cały dzień + w nocy. Oczywiście masz rację.

EOT.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.