Søger du en specifik kategori?

 



Oprettet ons. d. 11. marts 2009 kl. 10:47

admin
admin (29.491 point)
Guidens karaktér
1
2
3
4
5

Ekspertens tagster funktion

Dette er den funktion Eksperten bruger til at oversætte links til klikbare links.
Har du optimeringsforslag, må du meget gerne kontakte mig via jfl@eksperten.dk

<?php
/*
    Version : 3.0
    Author  : Lars B. Jensen, lars.jensen@ljweb.com
    Version : 3.1
    Author  : Jacob Friis Larsen, jfl@eksperten.dk

    Module Description
    Module to transform URL and E-Mail addresses into clickable links.

    Instruction
    Use the function format to extract and modify all links and emails in a given string.
    The parameters $target handling the target for links and $css_class for handling css on <a> tags are
    both optional.
*/

    class tagster {

        function format ($str, $target = '_blank', $css_class = '') {
            $str = str_replace(array('&', '<', '>'), array('&amp;', '&lt;', '&gt;'), $str);
            $str = $this->url($str, $target, $css_class);
            //$str = $this->email($str, $css_class);
            $str = $this->fix_endchar($str);
            $str = str_replace(array('  ', "\t", "\r", "\n"), array('&nbsp; ', '&nbsp; &nbsp; ', '', '<br />'), $str);
            return $str;
        }


        function url ($str, $target, $css_class) {
            $ins_str = ($css_class != '') ? ' class="'.$css_class.'"' : '';
            if ($target != '') {
                $ins_str .= ' target="'.$target.'"';
            }
            $str = $this->expand($str);
            $str = preg_replace(array('/(ftp|http|https|telnet|news|nntp|file|irc):\/\/([a-z0-9~#%@&:;=!\',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i', '/(\s|tp\:|\(|\[|\&gt;)(www\.)([a-z0-9~#%@&:;=!\',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i', '/(\s|tp\:|\(|\[|\&gt;)(ftp\.)([a-z0-9~#%@&:;=!\',_æøå\(\)\?\/\.\-\+\[\]\|\*\$\^\{\}]+)/i'), array('<a href="\\1://\\2"'.$ins_str.'>\\1://\\2</a>', '\\1<a href="http://\\2\\3"'.$ins_str.'>\\2\\3</ (...), '\\1<a href="ftp://\\2\\3"'.$ins_str.'>\\2\\3</a>'), $str);
            return $this->reduce($str);
        }


        function email ($str, $css_class = '') {
            $ins_class = ($css_class != '') ? ' class="'.$css_class.'"' : '';
            $str = $this->expand($str);
            $str = preg_replace('/([\s"])([\w\.\-_]+)@([\w\-_]+)\.([\w\.\-_]+)/i', '\\1<a href="mailto:\\2@\\3.\\4"'.$ins_class.'>\\2@\\3.\\4</a>', $str);
            return $this->reduce($str);
        }


        function fix_endchar ($str) {
            return preg_replace(array('/([\'"\)\]\.\,\?\!]+)">/i', '/([\'\"\)\]\.\,\?\!]+)" (target|class)="/i', '/([\'\"\)\]\.\,\?\!]+)<\/a>/i'), array('">', '" \\2="', '</a>\\1'), $str);
        }

        function expand ($str) {
            return ' '.$str.' ';
        }

        function reduce ($str) {
            return substr($str, 1, -1);
        }
    }
?>


Relevante links
<a href="http://www.ljweb.com/ (...)

Lars Jensen har givet lov til at denne artikel oprettes.

Skrevet fre. d. 23. januar 2004 kl. 15:04| #1

pacroon (38.059 point)
Alt der kan udvide min lærdom om regular expressions er god.
Desværre måtte jeg sidde og tage dem del for del, for at forstå fuldstændig hvad de gjorde.

En oversigt over hvert led i de expressions, og en forklaring på hvad de gjorde, ville måske have gjort det lidt lettere at læse.

Skrevet lør. d. 07. februar 2004 kl. 14:37| #2

cygnet (16.503 point)
Dette er da ikke en artikel

Skrevet søn. d. 08. februar 2004 kl. 17:50| #3

nanoq (112.601 point)
Tagsteren er god. Men at poste denne blandt artikler, kan jeg ikke se nogen grund til. En artikel skulle gerne være forklarende. Det er denne bestemt ikke.

Skrevet tor. d. 19. februar 2004 kl. 22:23| #4

fcknet (17.545 point)
Hvad er forskellen på 3.0 og 3.1 ?

Skrevet søn. d. 22. februar 2004 kl. 14:44| #5

htm (64.181 point)
tagsteren er desværre ikke fri for fejl. Admin har tilsyneladende fjernet for meget inden han lagde den online. Manglende funktioner, ugyldige returværdier etc.
Hvis den skal være som arktikel, så tag den dog ordret fra koden, sammen med en lille brugsforklaring!
Forskellen på version 3.0 og 3.1 er at 3.1 er lavet om til en klasse og replacefunktionerne er samlet til en array replacefunktion.

Skrevet søn. d. 28. august 2005 kl. 13:54| #6

dustie (14.855 point)
Der mangler jo noget af koden!
Ikke så flot..

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger