Låt PHP-funktion make_clickable() automatiskt skapa klickbara länkar

By . Latest revision .

Har du texter som innehåller länkar till webbplatser och du vill automatiskt göra dessa till klickbara HTML-länkar? Då kan en funktion som make_clickable() hjälpa dig.

PHP-funktionen make_clickable() är en funktion som tar en text som inparameter, $text. I funktionen körs texten genom ett reguljärt utryck som letar reda på alla delar i texten som ser ut som en länk, det vill säga att den börjar på http: eller https:. Dessa delar görs klickbara genom att de omringas med ett anchor-element, HTML-elementet <a></a>.

Orginaltext:

Detta är en länk som kan vara klickbar http://dbwebb.se/coachen.

När ovanstående text körs genom funktionen make_clickable() så kommer resultatet att bli enligt nedan.

Modifierad text:

Detta är en länk som kan vara klickbar http://dbwebb.se/coachen.

Så här ser källkoden ut för funktionen.

/**
 * Make clickable links from URLs in text.
 *
 * @param string $text the text that should be formatted.
 *
 * @return string the formatted text.
 */
function makeClickable($text)
{
    return preg_replace_callback(
        '#\b(?<![href|src]=[\'"])https?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#',
        function ($matches) {
            return "<a href=\"{$matches[0]}\">{$matches[0]}</a>";
        },
        $text
    );
}

Det finns ett exempel som du kan testa i kursrepot för oophp under example/textfilter. Öppna din webbläsare mot filen htdocs/clickable.php.

Det ser ut så här.

Kodexempel som visar hur funktionen makeClickable fungerar.

Kodexempel som visar hur funktionen makeClickable fungerar.

Du kan ställa frågor om funktionen i forumtråden där flera bidrog till funktionen make_clickable() genom att modifiera det reguljära uttrycket som från början hämtades från källkoden i Wordpress.

#Revision history

  • 2018-10-15: (C, mos) Ändrade return-satsen som gav fel HTMl-kod.
  • 2018-04-30: (B, mos) Uppdaterat testprogram i kursrepot för oophp.
  • 2013-04-29: (A, mos) Första versionen.

Document source.

Category: php, textfilter.