texte in texarea mit [u][/u] verändern

forsterm

Erfahrenes Mitglied
Hallo,

wie kann ich es anstellen, das wenn ich in ein Textarea feld z.B.
u.JPG
eingebe, dass dan der Text, welcher zwischen
u.JPG
steht z.B. unterstrichen ist?
 
Zuletzt bearbeitet:
:google: nach bbcode, bbcode-parser oder s.ä.

Es gibt übrigens auch ne PEAR-Klasse für sowas!

Wenn du das Ganze allerdings selbst programmieren möchtest, schau dir mal die Funktion preg_replace() an!
 
elmyth hat gesagt.:
Für u,b und i langt auch noch str_replace(), dann muss die PCRE-Engine nicht extra arbeiten ;)
Falsch.

Denn mit regulären Ausdrücken kannst du einfach den Text z.B. zwischen [.b] und [./b] mit <b>-Tags versehen.

Was aber, wenn du mit str_replace() arbeitest? Dann ersetzt du alle [.b] mit <b> und alle [./b] mit </b>.
Doch was passiert, wenn ein User beispielsweise das [./b] vergisst Dann wird der komplette Text bold, obwohl das [.b] nur zur Hervorhebung für eine bestimmte Textstelle gedacht war!

so long...
 
Zuletzt bearbeitet von einem Moderator:
nicht ganz BBCode aber so etwas ähnliches habe ich mal in einem Templatesystem angewandt:
Oben schreibt man zwischen {ROWS} und {/ROWS} die Anzahl der Reihen und bei Cols die Anzahl der Spalten.
Das Script verwendet für den späteren Gebrauch nur den Part, der dazwischen liegt.
Das kann man dann ja leicht umstricken. Alles was zwischen und wird halt von einem <strong> Tag umschlossen.

Hier mein Code:
PHP:
preg_match_all ("/(\{ROWS\})(.*)(\{\/ROWS\})/", $tmp, $row_count); 	// Zeilenanzahl pro Seite
$row_count = $row_count[2][0];
preg_match_all ("/(\{COLS\})(.*)(\{\/COLS\})/", $tmp, $col_count); 	// Spaltenanzahl pro Seite
$col_count = $col_count[2][0];
$suche = array ("/(\{ROWS\})(.*)(\{\/ROWS\})/","/(\{COLS\})(.*)(\{\/COLS\})/");
$tmp	= preg_replace ($suche, "", $tmp);


in $row_count steht dann z.B. eine 2, in $col_count eine 4.
Mit ein bisschen umbasteln ist das kein Thema, oder seht ihr das anders? ;)
 
Mir ist die Methode
PHP:
$txt = preg_replace('=(.*)=isU','<b>\1</b>', $txt);
immer noch am liebsten (weil am kürzesten ;)). Aber jedem das seine, von der Geschwindigkeit her sollten bei kleinen PHP-Applicationen auch keine erkennbaren Nachteile entstehen - egal für welche Möglichkeit man sich entscheidet.
 
Hallo,

ich hab im Internet folgende Funktion gefunden

Code:
function format ($text) {
  $ergebnis = htmlentities($text);
  $ergebnis = str_replace("\r\n\r\n","<br><br>",$ergebnis);
  $ergebnis = str_replace("[ b ]","<b>",$ergebnis);
  $ergebnis = str_replace("[ /b ]","</b>",$ergebnis);
  $ergebnis = str_replace("[ i ]","<i>",$ergebnis);
  $ergebnis = str_replace("[ /i ]","</i>",$ergebnis);
  $ergebnis = str_replace("[ u ]","<u>",$ergebnis);
  $ergebnis = str_replace("[ /u ]","</u>",$ergebnis);
  $ergebnis = str_replace ("|-","&ndash;",$ergebnis);
  $ergebnis = str_replace ("[q]","&raquo;",$ergebnis);
  $ergebnis = str_replace ("[/q]","&laquo;",$ergebnis);
  $ergebnis = str_replace ("[qs]","&rsaquo;",$ergebnis);
  $ergebnis = str_replace ("[/qs]","&lsaquo;",$ergebnis);
  $ergebnis = str_replace ("|'","&rsquo;",$ergebnis);
  return $ergebnis;
}

Nun wie muss ich es anstellen, dass wenn ich ein textarea hab und auf den Abschick button klick, dass er mir dann z.B den text zwischen
u.JPG
unterstreicht und ausgibt?
 
Zurück