Autor | Zpráva | ||
---|---|---|---|
eriq Profil * |
#1 · Zasláno: 23. 5. 2008, 16:15:40
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 * |
#2 · Zasláno: 26. 5. 2008, 00:24:16
To se opravdu nenajde někdo, kdo rozumí reg. výrazům?
|
||
Jan Tvrdík Profil |
#3 · Zasláno: 26. 5. 2008, 06:39:53
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 * |
#4 · Zasláno: 26. 5. 2008, 23:02:42
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. |
||
Časová prodleva: 16 let
|
0