PHP - Hinzufügen einer Verknüpfung zu einer URL in einen string

Habe ich eine Funktion hinzufügen wird die <a href> - tag vor dem link und </a> nach dem link. Aber es bricht für einige Webseiten. Wie würden Sie verbessern mit dieser Funktion? Danke!

function processString($s) 
{
    //check if there is a link

    if(preg_match("/http:\/\//",$s))
    {
        print preg_match("/http:\/\//",$s);


        $startUrl =  stripos($s,"http://");

        //if the link is in between text
        if(stripos($s," ",$startUrl)){
            $endUrl = stripos($s," ",$startUrl);
        }
        //if link is at the end of string
        else {$endUrl = strlen($s);}

        $beforeUrl = substr($s,0,$startUrl);
        $url = substr($s,$startUrl,$endUrl-$startUrl);
        $afterUrl = substr($s,$endUrl);

        $newString = $beforeUrl."<a href=\"$url\">".$url."</a>".$afterUrl;

        return $newString;
    }

    return $s;
}
  • Die regex ist ein wenig schlampig, aber 99% meiner Eingaben korrekte URLs wenn überhaupt
  • Welche Webseiten hat er Pause?
  • Am Anfang, testen Sie gegen https auch, aber später den Zusatz "s". Weiß nicht, wenn dies zu diesem Fehler führen, da ich auch nicht weiß, welche Seiten sind gebrochen 😉
  • Tut mir Leid, ich entfernte die [s] aus dem regex. Wie könnte ich die Funktionen für Zeichenketten wie "www.google.com" oder "https:www.example.com" ?
  • "www.google.com" ist schwieriger zu analysieren. Sie brauchen ein langes regex nur für alle TLDs.
InformationsquelleAutor AlexBrand | 2010-11-18
Schreibe einen Kommentar