Pogledajte određenu poruku
Staro 24. 08. 2011.   #11
srdjevic
profesionalac
Professional
 
Datum učlanjenja: 15.06.2005
Lokacija: Chicago IL, USA
Poruke: 209
Hvala: 12
12 "Hvala" u 11 poruka
srdjevic is on a distinguished road
Default

Nazalost, ja ne bih nikako koristio DOM parser. Glavni razlog je ona ubijajuca prva linija koda -- ako je ubacis, sredjujes HTML za obradu, ali ubijas url; host deo nije problem, on i treba da je lowercased, ali path, query, anchor, svi oni mogu da ti puknu, jer ih izvlacis lowercased, a ne u originalu (dakle nisu isti linkovi).
Ako je izbacis, parser ce ti puci u >50% koda, jer se nece snaci sa velikim slovima bas najbolje (a mnogi ih koriste).

Dakle, treba preci na pregove... Kako raspored propertija pravi problem, najlakse je (po meni) odraditi ovo u loop-ovima. Prvo izvucemo sve meta tagove, samo proverimo imaju li equiv, i ako imaju, cupamo content.

Radio sam skoro nesto vrlo slicno (sa drugim tagovima), pa evo ti preradjenog resenja (mozda patterni skripe malo, nisam testirao):

PHP kôd:
$html '<head>
<meta http-equiv="refresh" content="0; url=http://example1.com/">
<meta http-equiv=\'refresh\' content="0; url=http://example2.com/">
<meta http-equiv=refresh content="0; url=http://example3.com/">
</head>'
;

$res = array();
$metapattern '/<meta\s(.[^>]*)>/si';
$httppattern '/\s?http-equiv=[\'"]?refresh[\'"]?/si';
$refpattern1 "/\s?content='\d+\s?;\s?url=([^']*)'/si";
$refpattern2 '/\s?content="\d+\s?;\s?url=([^"]*)"/si';
// get all meta tags
preg_match_all($metapattern$html$metas);
foreach ( 
$metas[1] as $meta ) {
    
// check if it's equiv=refr
    
if ( preg_match($httppattern$meta) ) {
        
// extract url prop
        
if ( preg_match($refpattern1$meta$url) || preg_match($refpattern2$meta$url) ) {
            
$res[] = $url[1];
        }
    }
}

print_r($res); 
Doduse, kontam da bi ovo ipak opet pokrilo samo tih istih 99 od 100 gorepomenutih slucajeva, tako da je kanda svejedno...

__________________
ActiveCampaign - Email marketing made simple.
srdjevic je offline   Odgovorite uz citat
"Hvala" srdjevic za poruku: