2013-10-08 14 views
5

Ich wollte eine PHP-Funktion, die Text fett zwischen Doppel-Sternchen und kursiv zwischen einem Stern, machen würde (ganz wie der Editor auf Stackoverflow).Machen Sie Text zwischen Sternchen fett

Es gelten die gleichen Regeln, wenn zwischen dem * und dem Wort ein Leerzeichen steht, sollte es nicht dargestellt werden.

Wer kann mir helfen? Ich habe versucht, aber ich kam nur so weit, da ich nicht weiß, wie man die ungeraden Sterne "< b>" und die geraden "</b>" macht.

(ich kann sie nicht ohne Leerzeichen eingeben, wird der Text Stackoverflow zwischen fett ..... render)

$thenewtext = str_replace("**", "<b>", "**Hello World** of PHP"); 
+1

Reguläre Ausdrücke werden wo rk für dieses einfache Beispiel. Aber bitte erwäge einen Parser zu wählen. Verwenden regulärer Ausdrücke mit HTML [kann einige Leute zum Trinken bringen] (http://stackoverflow.com/a/1732454/13895). – John

+0

@John: OP scheint reinen Text * in * HTML umzuwandeln, HTML nicht zu analysieren, daher sollten reguläre Ausdrücke einfach in Ordnung sein. – FtDRbwLXw6

Antwort

9

Eine einfache regex wird der Trick :

$thenewtext = preg_replace('#\*{2}(.*?)\*{2}#', '<b>$1</b>', '**Hello World** of PHP'); 
0

Ich bin nicht allzu vertraut mit ihr, aber sie wollen brauche einen Regulären Ausdruck. Schauen Sie sich preg_replace()

an

Ich habe vor kurzem ein serverseitiges Texthervorhebungssystem implementiert, um AutoComplete von jQuery UI zu ergänzen.

Meine Anpassung Ihrer Idee, etwas so sein würde:

$txt = 'not bold [BeginBold]Yes Bold[EndBold] not bold again'; 

$newtxt = str_replace("[BeginBold]", "<b>", $txt); 
$newtxt = str_replace("[EndBold]", "</b>", $txt); 
echo $newtxt; 

diese produzieren würde:

nicht fett Ja Bold nicht fett wieder

Verwandte Themen