Gå til innhold

Finne et punkt i en variabel


Anbefalte innlegg

Jeg holder på med en BBCode-greie til et newsskript jeg mekker, og for å få URL-taggen til å funke, må jeg kunne finne punkter i variabelen som er input fra bruker. I vanlig BBCode, er syntaks for URL-tag slik:

[url=http://www.ensidepåinternett.com]Dette er linktekst[/url]

 

Jeg er nødt til å hente ut alt som er mellom = og ]. Dette skal "oversettes" videre med en str_replace, slik at det blir dugelig HTML ut av det. Spørsmålet er bare hvordan jeg kan finne teksten mellom de spesielle punktene.

Lenke til kommentar
Videoannonse
Annonse

Poenget er at jeg ikke skal erstatte spesifikke punkter i variabelen, men finne punktene uten å vite hvor. Jeg skal finne det som er mellom = og ], men det er ikke nøyaktig det samme hver gang. En annen mulighet kunne vært å erstattet (via str_replace()) ] med "> , men det går ikke, siden det er _mange_ ] i input-variabelen. Anyone?

Lenke til kommentar

Du kan bruke denne kode snutten:

$news = preg_replace("/\[url=([a-z]+?:\/\/)(.*?)\](.*?)\[\/url\]/", "<a href=\"\\1\\2\" target=\"_blank\">\\3</a>", $news);

Forandr $news med den variablen som inneholder teksten du skal sjekke.

Det er lenge siden eg skreiv bb til newsscriptet mitt, men vist eg husker rett så er koden inne i kvar () det som blir hentet ut som \1 osv etter kor den er plassert.

Lenke til kommentar

Greitt...

 

Har enda et par problemer:

 

 

Her er en link til hvordan det ser ut nå. Tekstformatering funker fint, og det å sette inn smileys ved å klikke på dem funker også. Problem nr. 1 er at smileyene fyller opp den skulte div'en, og gjør det ganske rotete. Jeg vil begrense det til 4 smileys per rad, men hvordan?

Koden for å hente ut smileyer fra mappe og mekke linker ser slik ut:

<?php 
 	if ($handle = opendir('smileys')) {
   while (false !== ($file = readdir($handle))) { 
   	if ($file != "." && $file != "..") { 
     $filnavn = str_replace(".gif","",$file); // stripper vekk filendelsen
     
     $filnavn = str_replace("$filnavn",":$filnavn:",$filnavn); //legger til : på hver side
     
     echo '<img src="smileys/'. urlencode($file) . '" onClick="emoticon(\'' . $filnavn . '\')"></a>   '; // "knapp" for å sette inn BB'en
      
   	} 
   }
   closedir($handle); 
 	}
 ?> 

 

Problem nr. 2 er når jeg skal "parse" BB-kodene. Jeg har to arrays, ett med BB-koder, og ett med erstatningene til BB-kodene. Hvordan skal jeg få alle verdiene til de forskjellige smileyene inn i arrayet uten å skrive det manuelt? Hovedkraften til skriptet er nemlig at du ikke må gjøre noe for å legge til en ny smiley.

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...