Unterschiedliche BB-Codes im Text ersetzen

FipsTheThief

Erfahrenes Mitglied
Also es geht darum das ich unterschiedliche BB-Codes wie und erstzen möchte im Text.

Einzeln geht es recht gut

PHP:
 $from = "/\[b\](.*?)\[\/b\]/";
 $to = "<b>\$1</b>";
 $input = preg_replace($from , $to , $text);
 echo $input;

aber sobald ich versuche 2 unterschiedliche BB-Codes zu ersetzen scheitere ich

PHP:
 $from = "/\[(b|u)\](.*?)\[\/(b|u)\]/";
 $to = "<b>\$2</b> <u>$2</u>";
 $input = preg_replace($from , $to , $text);
 echo $input;

Das macht er zwar , aber dann ersetzt er zuerst alles im fetten Text und dann nochmal extra in unterstrichen hinterher.

Dann hab ich mir überlegt das über eine Schleife zu machen indem ich mir alle Fundstellen die preg_match_all() gefunden hat ersetze. Aber da komm ich auch nicht so vorran wie gewünscht.
 
Das hab ich auch schon ;)

Dann macht er es fett unterstrichen. Im PHP Manual habe ich noch etwas gefunden was ich zur Zeit nicht so recht verstehe aber preg_replace kann wohl auch Arrays einlesen und dann in Ruhe abarbeiten.

So funktionierte es dann :

PHP:
 	$suchmuster[0] = '/\[b\](.*?)\[\/b\]/';
  	$suchmuster[1] = '/\[u\](.*?)\[\/u\]/';
  	$suchmuster[2] = '/\[i\](.*?)\[\/i\]/';
  
  	$ersetzungen[0] = '<b>$1</b>';
  	$ersetzungen[1] = '<u>$1</u>';
  	$ersetzungen[2] = '<i>$1</i>';
  
  	$eintraege =  preg_replace($suchmuster,$ersetzungen,$eintraege);
  	return $eintraege;

Also klappen tut es damit auch wenn es ein wenig unförmig ist , aber versteh mal einer reguläre Ausdrücke , bzw für mich noch unentdecktes Land.

Eventuell kann man das noch abkürzen in dem man das Suchmuster so setzt das er alle Einträge die dem Suchmuster entsprechen rausfiltert mittels preg_match_all() und dort wird ja ebenfalls ein Array gebildet mit den Fundstellen.
 
Zuletzt bearbeitet:
Zurück