Gå til innhold

[Løst]Lage klikkbare linker med begrenset lengde...


Anbefalte innlegg

Hei!

 

Noen som kan hjelpe meg med et par små problem. Har brukt ereg_replace til dette før, men ser at den funksjonen skal utfases, og med tanke på at den ikke har funket hundre prosent slik jeg vil, har jeg tenkt å bytte ut.

 

Skal bruke dette hovedsakelig i en gjestebok. Før teksten skrives ut på skjermen, vil jeg gå igjennom teksten å finne alle linker (starter på http:// eller www.) og lage dem klikkbare med target="_blank". I tillegg vil jeg at teksten som vises (altså <a href="link">teksten</a>) kan begrenses til så så mange tegn.

 

Jeg vil også ha en funksjon som kjøres før den ovenstående, som sjekker etter linker (som starter på http:// eller www) som ender på .jpg eller .gif. Disse vil jeg skal gjøres om til img tag, slik at bildene vises på skjermen. Disse bildene skal vises i en begrenset størrelse, med mulighet for å klikke på disse, og så få opp bildet fra sin opprinnelige plassering, i et nytt vindu...

Lenke til kommentar
Videoannonse
Annonse

<?php
function replaceUrls($str) {
$str = preg_replace("/(\A|[^=\]'\"a-zA-Z0-9])(www\.[^<>\s()]+)/i",'\1http://\2\3',$str); //Convert www to http://
$replace = "/(\A|[^=\]'\"a-zA-Z0-9])((http|ftp|https|ftps|irc):\/\/[^<>\s()]+)/i";
$str =  preg_replace_callback($replace,'callbackUrl' ,$str);
return $str;
}
//Callback url
function callbackUrl($input) {
$info = pathinfo($input[2]); //Get file extension
$ext = array('jpg','jpeg','gif','png','svg');
if(in_array(strtolower($info['extension']),$ext)) {
	//If image extension, print image
	return ' <a href="'.$input[2].'" target="_blank"><img src="'.$input[2].'"></a>';
} else {
	//If link, print link
	if(strlen($input[2]) > 30) {
		$showLink = substr($input[2],0,30).'....';
	} else {
		$showLink = $input[2];
	}
	return ' <a href="'.$input[2].'" target="_blank">'.$showLink.'</a>';
}
}

//Example
echo replaceUrls('tekst her www.url.no/jalla/index.gif mer tekst http://url.no/ enda mer tekst');
?>

 

Denne skal funke

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...