2013-10-08 16 views
5

Volevo creare una funzione PHP che rendesse il testo in grassetto tra i doppi asterischi e il corsivo tra un asterisco, (proprio come l'editor su StackOverflow).Crea testo tra gli asterischi in grassetto

Si applicano le stesse regole, se c'è uno spazio tra * e la parola, non deve essere visualizzato.

Chi può aiutarmi? Ci ho provato, ma sono arrivato solo fin qui, perché non so come rendere gli asterischi dispari "< b>" e quelli pari "</b>".

(non posso digitare senza spazi, StackOverflow renderà il testo tra il grassetto .....)

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

Le espressioni regolari saranno wo rk per questo semplice esempio. Ma per favore considera di scegliere un parser. Usando le espressioni regolari con HTML [puoi guidare alcune persone a bere] (http://stackoverflow.com/a/1732454/13895). – John

+0

@John: OP sembra trasformare il testo normale * in * HTML, non analizzando l'HTML, quindi le espressioni regolari dovrebbero andare bene. – FtDRbwLXw6

risposta

9

Un semplice regex farà il trucco :

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

non sono troppo familiarità con essa, ma che si sta per bisogno di un'espressione regolare. Look into preg_replace()

Recentemente ho implementato un sistema di evidenziazione del testo sul lato server per integrare il completamento automatico dell'interfaccia utente jQuery.

mio adattamento della vostra idea sarebbe qualcosa di simile:

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

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

questo produrrebbe:

non grassetto Sì Grassetto non grassetto nuovo

Problemi correlati