ik wil graag dat mensen berichten kunnen typen op deze manier

[color=red]hoi[/color]
ik moet dus iets met str_replace doen denk ik :?

heeft iemand enig idee hoe ik dit moet aanpakken?

$string = str_replace('[color=red]','<font color=red>',$string);

ik zat zelf zo te denken....
is dit een goeie manier? wordt het geen probleem als ik geen haakjes om de kleur gebruik?

ipv red dus 'red'?

mvg,

Erik
Dat maakt in principe niet uit erik, wordt in IE en firefox wel goed geïnterpreteerd.
Ik gebruik beide altijd om alles te testen, maar van andere browsers weet ik het niet, denk het wel.
<?php
$sBericht = 'xxx[color=blUe]hoi[/color]xxx';

$sRegex = '#\[\s*color\s*=\s*(red|green|blue)\s*\](.*)?\[\s*/\s*color\s*\]#is';

$sBericht = preg_replace($sRegex, "<span style=\"color:$1\">$2</span>", $sBericht);

echo $sBericht;
?>

Niet getest maar zal het wel doen denk ik.

edit:

Getest...

edit2:

En om hoofdletters in de kleur om te zetten naar kleine letters:

<?php
error_reporting(E_ALL);

$sBericht = 'xxx[color=blUe]hoi[/color]xxx';

function ubb_parser( $aMatches )
{
//print_r($aMatches);
return '<span style="color:' . strtolower($aMatches[1]) . '">' . $aMatches[2] . '</span>';
}

$sRegex = '#\[\s*color\s*=\s*(red|green|blue)\s*\](.*)?\[\s*/\s*color\s*\]#is';

$sBericht = preg_replace_callback($sRegex, 'ubb_parser', $sBericht);

echo $sBericht;
?>
<?php

$badword[0]="/{COLOR:RED}/";
$badword[1]="/{NOCOLOR}/";
$badword[2]="/{COLOR:BLUE}/";
$badword[3]="/{COLOR:BLACK}/";
$badword[4]="/{COLOR:YELLOW}/";
$badword[5]="/{COLOR:WHITE}/";
$badword[6]="/{BR}/";

$badword[11]="/{VET}/";
$badword[12]="/{CURSIEF}/";
$badword[13]="/{ONDERSTREEP}/";

$badword[18]="/{NOCURSIEF}/";
$badword[19]="/{NOONDERSTREEP}/";
$badword[20]="/{NOVET}/";
$badword[21]="/{CENTER}/";
$badword[22]="/{NOCENTER}/";
$replacement[0]="<font color=red>";
$replacement[1]="</font>";
$replacement[2]="<font color=blue>";
$replacement[3]="<font color=black>";
$replacement[4]="<font color=yellow>";
$replacement[5]="<font color=white>";
$replacement[6]="<br>";

$replacement[11]="<b>";
$replacement[12]="<i>";
$replacement[13]="<u>";

$replacement[18]="</i>";
$replacement[19]="</u>";
$replacement[20]="</b>";
$replacement[21]="<center>";
$replacement[22]="</center>";
ksort($badword);
ksort($replacement);
$bijdrage=$_POST["bijdrage"];
$bijdrage=cleanup($bijdrage,$badword,$replacement);

?>
sorry voor het slechte engels, ik heb in een luie bui m'n broertje de dingen laten invoeren.

in die cleanup() functie zitten dingen als addslashes, strip tags en preg_replace()


Had ik nog liggen:P
Ik zou zulk soort tags niet gebruiken: <font color=red>, omdat je met stylesheets een veel schonere code krijgt, die ook overzichtelijker is.

@Armorad: Het zou handig zijn als je die functie cleanup() dan ook zou laten zien ;)...
<?php
function cleanup($string=""){
$string=strip_tags($string,"<i><b><u><font>");
$string=htmlspecialchars($string);
$string=addslashes($string);
return $string;
}
?>
<?PHP
$tekst = preg_replace ("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "<font color=\"\\1\">\\2</font>", $tekst);
?>
Jip schreef op 22.11.2005 19:52
Ik zou zulk soort tags niet gebruiken: <font color=red>, omdat je met stylesheets een veel schonere code krijgt, die ook overzichtelijker is.

@Armorad: Het zou handig zijn als je die functie cleanup() dan ook zou laten zien ;)...


Jip het gaat hier niet om de opmaak van een site te maken ;) Of wou je voor een bericht die iemand achterlaat elke keer een .css maken? Het gaat erom dat iemand een bericht kan maken [color=red]tekst[/color] en dat die dat dan gaat omzetten naar correcte HTML. Zo kan je met beperkte code werken en toch html opmaak in je berichten zetten. :D

Reageren