Autor Zpráva
eriq
Profil *
Dobrý den.
Obracím se na vás s prosbou ohledně reg. výrazu.

Potřeboval bych s textu vytáhnout odkazy a ty rozlišovat jestli se jedná o externí či interní odkaz a podle toho s nimi zacházet.

Př.:
$text = "Toto je zkušební text, ve kterém jsou <a href="./uvod.php">interní odkazy</a>, ale také <a href="http://example.cz">externi odkazy</a>. Mezi nimi je někde i <a href="mailto:sss@ss.cz">email</a>.

A potřebuji aby mi to uložilo do proměnných nějak takto:

$inter = ./uvod.php
$exter = http://example.cz
$mail = mailto:sss@ss.cz


nebo by stačilo i takto:

$inter = <a href="./uvod.php"</a>
$exter = <a href="http://example.cz</a>
$mail = <a href="mailto:sss@ss.cz</a>


Externí odkazy odlišuji takto, ale není to ono:
preg_match('@^(?:http://)?([^/]+)@i',$match[1], $matchess);
    echo$matchess[0];

Např.: Vypisuje to mimo jiné i samotné ./ nebo ../ bez ničeho.

Takže ještě jednou můj dotaz.
Potřebuji reg. výraz pro zjištění odkazu (zvlášť in/externího) z textu a jeho uložení pro další zpracování.

Prosím poraďte mi jak na to. Děkuji mnohokrát.
eriq
Profil *
To se opravdu nenajde někdo, kdo rozumí reg. výrazům?
Jan Tvrdík
Profil
Tohle jsem našel ve svým starým skriptu, třeba to funguje:
    $urlmaska = "((((http)\:\/\/)|(\/))[^\"#]{0,100})|([^\"#]{1,100}\.(php|html|htm))" ;
    $maska = "/href=\"(?P<url>$urlmaska)\"/U";

    preg_match_all($maska, $obsah, $shody);
eriq
Profil *
Jan Tvrdík
Děkuji, script funguje perfektně.

Akorát bych ho ještě potřeboval aby dokázal rozpoznat odkazy začínající ./ a ../.

Toto ten script nepřečte. Místo tohy vypíše prázdnou stránku.

Děkuji za vaše rady.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0