preg_match en url

Status
Niet open voor verdere reacties.

kenikavanbis

Terugkerende gebruiker
Lid geworden
22 mei 2007
Berichten
2.191
ik ben bezig met het maken van een functie om linken binnen de site te zoeken

de vraag is waar ik mis om de ?... mee te kunnen hebben
PHP:
    public function GET_URL_from($string,$host='',$fromhost = true){
        //$theM = $this->HTML_ACTIONS->RTRIM("'", $a);
        $filters = ["/((http|https|ftp|ftps)\:\/)?([\/a-zA-Z0-9\-\.]+)\.[a-zA-Z]{2,3}(\/=$&\S*)?/"];
         print $string;
        foreach($filters as $filter){
            //var_dump($filter);
            $is = preg_match($filter,$string, $matchb)>0;
           print "<pre>". print_r($matchb,true)."</pre>";
           if($is){//;strpos($theM,'http://')==1){
                if($fromhost){
                    return $matchb[0];
                }
           }
        }
        return "not url".$string;
    }
resultaten zijn bij binnenkomen van onderstaande string


/newsite2/vieuwport.php?lang=EN&content=home' title='Englise

Array
(
[0] => /newsite2/vieuwport.php
[1] =>
[2] =>
[3] => /newsite2/vieuwport
)

http://www.freewebstuff.be' title='freewebstuff' target='_blank

Array
(
[0] => http://www.freewebstuff.be
[1] => http:/
[2] => http
[3] => /www.freewebstuff
)

http://www.search-belgium.com/' title='search-belgium' target='_blank

Array
(
[0] => http://www.search-belgium.com
[1] => http:/
[2] => http
[3] => /www.search-belgium
}
 
dit stuk:

[a-zA-Z]{2,3} is sowieso niet meer correct tegenwoordig omdat TLDs niet meer beperkt zijn tot 3 tekens. een valide url als kenikavanbis.name/test.php?123 gaat dus sowieso niet werken

Een algemene extractor wordt dus sowieso lastig. Het laatste deel "\/=$&\S*)?/" begrijp ik ook niet helemaal. je zoekt op /= dat lijkt me niet vaak matchen. probeer je hier niet een groep te pakken in plaats van een literal?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan