Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak skonstrułować wyrazenie regularne ([^href]+)
Octobus
post 29.12.2011, 12:34:59
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


Witam. Muszę napisać wyrażenie regularne do linków a poza często zastaawaim się jak zrobić taki warunek ([^href]+) czyli np a href gdzie pomiędzy a a href może być cokolwiek. Nie wiem czy dobrze to wytłumaczyłęm, warunek ma się wykonywać dla
Kod
a href
a hclass href
a alt="" href
Go to the top of the page
+Quote Post
piotrooo89
post 29.12.2011, 12:39:43
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




A nie możesz po prostu zrobić:
Kod
/href="(.*?)"/
?


--------------------
Go to the top of the page
+Quote Post
by_ikar
post 29.12.2011, 14:32:35
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Kod
/href="([^"]+)"/


Chyba o coś takiego chodziło autorowi wink.gif nie mniej działanie jest raczej identyczne co do powyższego.
Go to the top of the page
+Quote Post
Octobus
post 29.12.2011, 14:53:34
Post #4





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


Chyba źle wytłumaczyłem chodzi o to że pomiędzy a i href może być coś jeszcze jak dam
Kod
#<a href=".*?"#

załapie dla linku
<a href="xxx"
ale dla
<a alt="aaa" href="xxx"
już nie będzie działać
dałem
Kod
#<a([^h]+)href="([^"]+)"#

ale to bez sensu
Go to the top of the page
+Quote Post
piotrooo89
post 29.12.2011, 14:59:22
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale powiedz co Ty chcesz łapać? samo href? czy inne atrybuty też?


--------------------
Go to the top of the page
+Quote Post
Octobus
post 29.12.2011, 22:35:50
Post #6





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


W tej chwili mam np do wyciagniecia link ktory moze miec rozny adres ale będzie kończył się na /user=xxx" czyli:
Kod
<a href="/user=kdas">
<a href="index.php/user=kdas">
<a href="folder/index.php/user=kdas">
<a href="/katalog/folder/user=kdas">

daje pattern:
Kod
#"([^/]+)/user:([^"]+)"#

i nie zadziala dla ostatniego przykladu. Gdyby dalo sie dać
Kod
#"([^user=]+)user:([^"]+)"#

byloby ok. W ten sposób się jednak nie da więc muszę się dowiedzieć w jaki się da. Oczywiście nie chodzi o tylko ten przykład bo często się spotykam z takim problemem i zazwyczaj zakładam że pierwszą literą (w tym przypadku) nie będzie u czyli dale
Kod
......([^u]+)u......


Ten post edytował Octobus 29.12.2011, 22:37:01
Go to the top of the page
+Quote Post
by_ikar
post 2.01.2012, 08:59:06
Post #7





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Czyli potrzebujesz wyciągnąć nazwę użytkownika z konkretnego adresu? Jeżeli tak, to nie potrzebujesz do tego łapać całego tagu, i podawać mu mniej więcej treść jaka może być w środku. Wystarczy że złapiesz to co ci jest potrzebne, czyli samego usera:

Kod
#user=([^"]+)#is


  1. <?php
  2.  
  3. $str = '
  4. <a href="/user=kdas">
  5. <a href="index.php/user=kdas">
  6. <a href="folder/index.php/user=kdas">
  7. <a href="/katalog/folder/user=kdas">
  8. ';
  9.  
  10. preg_match_all('#user=([^"]+)#is', $str, $matches);
  11.  
  12. echo '<pre>'.print_r($matches, true).'</pre>';


Kod
Array
(
    [0] => Array
        (
            [0] => user=kdas
            [1] => user=kdas
            [2] => user=kdas
            [3] => user=kdas
        )

    [1] => Array
        (
            [0] => kdas
            [1] => kdas
            [2] => kdas
            [3] => kdas
        )

)


No chyba że potrzebujesz cały adres i wszystkie informacje jakie w adresie są. Wtedy będziesz musiał łapać cały adres wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 18:06