Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] PREG - potrzebne wyrażenie
Forum PHP.pl > Forum > PHP
Vengeance
Witajcie.

Już nie raz prosiłem forumowiczów o "gotowca". Teraz także oto prosze i pewnie będę to robił jeszcze nie raz :]

Co jak co, ale z wyrażeń regularnych jestem noga, ale czasem coś potrzeba.

Dane wejściowe:
Kod
<a href="http://costam.pl">costam</a>
<a href="http://www.wazne.org">To Jest Wazne</a>
<a href="http://costam2.net">costam2</a>
<a href="http://www.wazne.org">Kolejna Wazna Sprawa</a>


Dane wyjściowe (wyciągnięte przez wyrażenie regularne)
Kod
array (
   [0] = '<a href="http://www.wazne.org">To Jest Wazne</a>'
   [1] = '<a href="http://www.wazne.org">Kolejna Wazna Sprawa</a>'
)


Opis słowny:
Do dyspozycji mam jedynie adres strony WWW. Potrzebuje, by wyrażenie regularne wyciągnelo wszystkie odnosniki z tekstu do tej wlasnie strony.
Czyli wszystkie bloki <a href="podana strona">xxx</a>. Musze jednak wziac pod uwage, ze takie hiperlacze moze miec takze atrybuty target, title itd. Czyli takie hiperlacze tez ma byc znajdywane:
<a title="siema" href="podana strona" target="_blank">costam</a>

Próbowałem coś samemu... doszedłem do wzoru:
preg_match_all('#<a.*href="' . $sAdres . '".*>.*<\/a>#s', $sZawartoscStrony, $aWynik);

jednak przy wielu hrefach się mocno pierniczy :/ Przy jednym dziala ;]

Pozdrawiam i z góry dziękuje temu kto zechce pomóc.
FiDO
Dodaj flage U do tego wyrazenia. Dodatkowo dla pewnosci, ze zaden dziwny adres sie nie wylozy wypadaloby przepuscic $sAdres przez preg_quote" title="Zobacz w manualu PHP" target="_manual przed wstawieniem tego do wyrazenia.
Vengeance
preg_quote() już jest używane.
Obecnie mam taki wzór:
Kod
preg_match_all('#(<a(.*?)href="' . $sAdres . '"(.*?)>(.*?)<\/a>)#is', $sZawartoscStrony, $aWynik);      


Dane wejściowe
Kod
<html>
<head>
<title>Sajt 4</title>
</head>
<body>
   <h1>To jest Sajt 4</h1><br />
   <a href="http://costam.pl">costam</a>
<a href="http://reklama.org">To Jest Wazne</a>
<a href="http://costam2.net">costam2</a>
<a href="http://reklama.org">Kolejna Wazna Sprawa</a>
</body>
</html>


Dane wyjściowe:
Kod
Array
(
    [0] => Array
        (
            [0] => <a href="http://costam.pl">costam</a><a href="http://reklama.org">To Jest Wazne</a>
            [1] => <a href="http://costam2.net">costam2</a><a href="http://reklama.org">Kolejna Wazna Sprawa</a>
        )
)


Czyli nadal dokleja jakieś śmieci, linki które w wyniku znaleść się nie powinny :/
FiDO
Zmien #(<a(.*?)href na #(<a([^>]*?)href
Vengeance
Dziekuje Ci bardzo :*
Ja tych PREGów nie rozumiem i chyba nigdy nie pojme ;P
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.