Autor Zpráva
matak
Profil
Jak napsat regulár, který dokáže bezpečně poznat interní a externí adresu? z "href" v odkazu?
Majkl578
Profil
Pokud „interní“ = v rámci webové stránky a „externí“ = jinam, tak bych zkusil něco na tomto principu:
$data = <<< DATA
<a href="/x/y/z.foo">foo</a>
<a href="http://seznam.cz/">foo</a>
<a href="http://foo.google.com/~xe/qwert">foo</a>
<a href="http://local/xyz">foo</a>
DATA;

preg_match_all('~\<a.*href\="(.+)".*\>~U', $data, $hrefs);

$internal = preg_grep('~
(^/) #začíná /
|
(^(ht|f)tps?\://([\w\-]+\.)*' . preg_quote($_SERVER['HTTP_HOST'], '~') . '/) #url začíná adresou našeho serveru
~xi', $hrefs[1]);

var_dump($internal, $external = array_diff($hrefs[1], $internal));
Je možné, že narazíš na nějakou možnost, která by se tvářila jako internal a byla external a opačně. V tom případě dej vědět.
matak
Profil
díky, super, zkusím, kdyby něco dám vědět
matak
Profil
co třeba odkaz typu href="index.php?neco=1"

to nechytne ne a hlavne nebylo by lepsi to obratit?

hledat externi odkazy? a vylucujici metodou urcit interni?

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