Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak skonstrułować wyrazenie regularne ([^href]+)
Forum PHP.pl > Forum > Przedszkole
Octobus
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
piotrooo89
A nie możesz po prostu zrobić:
Kod
/href="(.*?)"/
?
by_ikar
Kod
/href="([^"]+)"/


Chyba o coś takiego chodziło autorowi wink.gif nie mniej działanie jest raczej identyczne co do powyższego.
Octobus
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
piotrooo89
ale powiedz co Ty chcesz łapać? samo href? czy inne atrybuty też?
Octobus
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......
by_ikar
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
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.