Gå til innhold

smiley-insert-skript


Anbefalte innlegg

Holder på med et "one-click smiley insert"-skript, slik at når man trykker på en thumb av en smiley, legges den inn i teksten i form av BBCode. (mye det samme som er på forumet her). Problemet oppstår når dette skal "parses" om til korrekt HTML. Alle smileyer og tilhørende BBCode hentes dynamiskt fra en mappe, og det er meningen skal være hovedkraften i skriptet. Derfor lagres alle smiley-BBCodes i et array.

 

For parsingen av BB-kodene brukes to arrays og en str_replace-greie. I array #1 er BB-kodene, og i array #2 er det som BB-kodene skal oversettes til. Problemet er at jeg må ha innholdet i arrayet med smileyer inn i array #1. Hvordan får jeg dette til?

 

En annen ting er at arrayet inneholder _alle_ smileyene som er tilgjengelig for bruk. Jeg trenger bare akkurat de som er i bruk i akkurat den "posten". Hvordan gjør jeg dette?

 

 

 

 

PS: Hvis dere ikke skjønner bæret av hva jeg snakker om, kan jeg poste litt kode. :p

Lenke til kommentar
Videoannonse
Annonse

Jepp. Er litt komplisert å forklare (og også å skjønne? :p )

 

 

Smileyene sankes inn fra mappen smileys på denne måten:

if ($handle = opendir('smileys')) {
 while (false !== ($file = readdir($handle))) { 
 	if ($file != "." && $file != "..") { 
   $filnavn = str_replace(".gif","",$file);
   $filnavn = str_replace("$filnavn",":$filnavn:",$filnavn);
   
 	} 
 }
closedir($handle); 
}

Filnavnene modifiseres til de får rett BB-Code-form. $filnavn inneholder navnene på alle filene i mappen.

 

BB-Code oversettes på denne måten:

$bbcodes = array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[url]','[/url]','[img=',']','[code]','[//code]','' . $filnavn . '');//BB-codes som skal brukes legges her
$htmlcodes = array('<b>','</b>','<i>','</i>','<u>','</u>',' ',' ','<img src="','">','','','<img src="smileys/' . $file . '">');// Her er erstatningene, i lik rekkefølge

$nyhet = str_replace("\n","<br>",$nyhet); //fikser linjeskift
$nyhet = preg_replace("/\[url=([a-z]+?:\/\/)(.*?)\](.*?)\[\/url\]/i", "<a href=\"\\1\\2\" target=\"_blank\">\\3</a>", $nyhet); //fikser [url]-taggen
$nyhet = str_replace($bbcodes, $htmlcodes, $nyhet); // setter inn erstatninger for BBcode

 

Problemet består av å kun legge til variablene til smileyene som er i bruk i akkurat den nyheten. Slik det er nå, består $filnavn av alle smileynavnene, men jeg trenger bare akkurat de som er i bruk.

 

 

...er selvfølgelig også åpen for alternative måter å "parse" BB-koden på... :)

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å
×
×
  • Opprett ny...