Ik wil dat bezoekers bb-code kunnen gebruiken in een tekstvak zoals: url of [link]url[/link]. Hoe kan ik dit vertalen naar gewone html dat hij een plaatje laat zien.
Even een voorbeeld van iets wat ik gebruik: (uit mijn hoofd, dus er kunnen fouten in zitten)

Ik ga er van uit dat:

1: De door de gebruik ingevoerde tekst in $tekst staat
2: De gebruiker een plaatje opgeeft in de vorm [ img ]http://xx.domein.nl/plaatje.ext[ /img ] (zonder de spaties in de img-tag)
3: De uitvoer ook in $tekst moet komen

<?php
$tekst = preg_replace('/\\[img\]([a-z0-9_\.\/:-]*)\[\/img\]/iUs','<img src="$1" alt="plaatje" />',$tekst);
?>

1: $tekst is de variabele die hierbij bewerkt wordt.
2: Het eerste argument is wat opgezocht dient te worden. In dit geval dient het stuk te beginnen met
en te eindigen met
Daar tussen mag alleen
a t/m z (hoofd en kleine letters)
0 t/m 9
. (letterlijk, vandaar de \ er voor)
/ (letterlijk, vandaar de \ er voor)
:
_
-

Het gedeelte tussen en wordt hierbij opgeslagen in $1 (zie de handleiding op php.net). Dit deel wordt dus bewaard, en later in de replacement weer gebruikt.

De replacement wordt als volgt:
<img src="<<deel tussen ( en )>>" alt="plaatje" />

Waarmee een (x)html valide code voor een plaatje wordt gegenereerd.
Edwin Gozeling schreef op 21.02.2006 23:47
@Jan Koehoorn: Ik zie bij jouw eregi-voorbeeld maar twee argumenten? (3 verseist).


Klopt. De tweede moet een lege string zijn: ''
Nu gaat het script van dit forum raar om met geplaatste \ zie ik, ik heb ze nu iets aangepast, maar het wordt nog niet weergegeven zoals ik wil. (alhoewel er maar 1 ontbreekt, op een plek waar het IN PRINCIEPE geen kwaat zou moeten kunnen)

Toevoeging ivm eerste argument van mijn oplossing:

De /iUs aan het eind heeft de volgende gevolgen:
1: De letters staan NA de afsluitende /, en zijn dus speciale argumenten.
2: u staat voor ungreedy, dus de kortst mogelijke oplossing wordt gebruikt.
3: i staat voor case Insensitive, dus niet hoofdletter gevoelig.
4: s zorgt ervoor dat het script om kan gaan met regeleinden in de variabele $tekst (al is het in dit geval niet nodig)
Tot slot nog een test resultaat:

Invoer $tekst:
Dit is een [img] ubb test \[img\]http://www.plaatje.nl/plaatje.ext[/img] Tot zover deze tekst


Uitvoer $tekst:
Dit is een [img] ubb test <img src="http://www.plaatje.nl/plaatje.ext" alt="plaatje" /> Tot zover deze tekst
Download gewoon een WYSIWYG .zip file via het G00Gle netwerk. Kom je vast ook een end mee...
wel het werkt nu toch? ofniet?
:) ik heb eens zitten zoeken en ik heb het zo gedaan:
Het werkt bij mij :)

<?php

$text="";
$img_open=str_replace("", "<img src='", $text); $img_close=str_replace("", "'>", $img_open);

echo $img_close;

?>
Weet iemand toevallig ook een makkelijke manier om de kleuren te gebruiken in [ignore]
[/ignore]???

dus in het gebruik van [ignore]
[/ignore] de vars blauw, commentaar geel, etc...

Reageren