Update: automatische URL herkenning

Zo, vandaag heb ik even aan ontwikkelen aan de website.
De hele middag zijn er foutmeldingen getoond op de website, omdat ik lekker aan het prutsen was. Uiteraard zou ik ook lokaal PHP en MySQL kunnen installeren, maar dat doe ik liever niet. Lokaal houdt ik het maar bij ASP.Net.

Een van de updates is, is dat de Google Ads nu beter in de stijl van de website vallen. Dit was even puzzelen, maar is toch goed gelukt naar mijn mening.

De belangrijkste, en moeilijkste, update was om de automatische URL-herkenning werkend te krijgen.
Dit kan met reguliere expressies, maar ik kon niet echt een goed werkende bedenken/vinden.

Uiteindelijk heb ik met m’n eigen fantasie en hulp van de immens nuttige website https://www.regexlib.com/ toch een werkende reguliere expressie kunnen fabriceren. Hij ziet er zo uit: \\s((www|http|ftp)(\\W+\\S+[^).,:;?\\]\\} \\r\\n$]+))

In PHP kun je dan met de functie preg_replace de reguliere expressie zo gebruiken.

$pattern1 = "/\\s((www|http|ftp)(\\W+\\S+[^).,:;?\\]\\} \\r\\n$]+))/";
$pattern2 = " <a>$1</a>";
$text = preg_replace($pattern1, $pattern2, $text);

Gelukkig kon ik het testen in de maand augustus, aangezien ik daar enkele posts had met hyperlinks er in verstopt.
Ook heb ik een reguliere expressie implementeerd die e-mail adressen kan parsen.

Deze heb ik zelf niet bedacht, maar zo gevonden
Hij wordt zo gebruikt in m’n pagina:

$text = preg_replace("#(\\s)([a-z0-9\\-_.]+)@([^,< \\n\\r]+)#i", "$1<a>$2@$3</a>", $text);

Deze functionaliteit vind ik wel enorm gaaf.
Ook een functie geimplementeerd die de URL’s kan afkappen wanneer ze te groot worden. Deze heb ik in een script gevonden tijdens m’n zoektocht op het internet vandaag.
Wel een enorm handige functie, want anders vernaggelen de hyperlinks zo nu en dan de lay-out.

function chunk_url(&amp;$ret)
{
    $links = explode(' $countlinks = count($links);
    for ($i = 0; $i < $countlinks; $i++)
    {
        $link = $links[$i];
        $link = (preg_match('#(.*)(href=")#is', $link)) ? '
        $begin = strpos($link, '>') + 1;
        $end = strpos($link, '<', $begin);
        $length = $end - $begin;
        $urlname = substr($link, $begin, $length);
        /**
        * We chunk urls that are longer than 50 characters. Just change
        * '50' to a value that suits your taste. We are not chunking the link
        * text unless if begins with 'https://', 'ftp://', or 'www.'
        */
        $chunked = (strlen($urlname) > 50 &amp;&amp; preg_match('#^(https://|ftp://|www\\.)#is', $urlname)) ? substr_replace($urlname, '.....', 30, -10) : $urlname;
        $ret = str_replace('>' . $urlname . '<', '>' . $chunked . '<', $ret);`
    }
}

De disclaimer voor de functie:

### Plugin Name: Chunk URLS for WordPress
### Plugin URI: https://www.village-idiot.org/archives/2006/06/29/wp-chunk/
### Description: Shortens URLs within comments so they don't break your site.
### Author: whoo
### Version: 2.0
### Author URI: https://www.village-idiot.org/

Zo, nu is dat ook weer legaal.


Share

comments powered by Disqus