2011-08-24 4 views
5

Ho un database mysql di articoli che sono stati sottoscritti una textarea senza formattazione, usano solo un carattere di nuova riga per le interruzioni di lineaquery SQL per convertire carattere di nuova riga a un html <br>

\n 

ho bisogno di convertire tutti questi in html tag br

<br /> 

Puoi aiutarmi a scrivere una query per fare questo che si può usare in phpMyAdmin che farà questo?

il nome della tabella è

exp_channel_data 

come una questione bonus ...

C'è una domanda che posso correre che eliminerà tutto fuori della metà del p e la durata tag

voglio sbarazzarsi di questa roba

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"> 
<span face="Times New Roman"> 

e finire con solo questo

<p> 
<span> 
+0

Nel caso in cui non lo sapeste già, leggere su SQL injection: http://en.wikipedia.org/wiki/SQL_injection. Davvero, davvero, non vuoi avere SQL nel tuo database. Inoltre, in generale, consiglio vivamente di eseguire questo tipo di formattazione al di fuori del database. –

+0

ya In realtà non includo alcun SQL nel database (credo), questa è solo una conversione una tantum che devo eseguire, apprezzare il suggerimento – mjr

risposta

14

Prima domanda:

UPDATE exp_channel_data SET text_column = REPLACE(text_column, '\r\n', '<br />') 

Se non sostituisce nulla, utilizzare '\n' invece di '\r\n'.

Seconda domanda:

Non si può farlo con una query SQL, è necessario recuperare questi dati in uno script PHP, o qualsiasi altra cosa che ti piace, ed eseguire un'espressione regolare sostituzione (ad esempio per PHP) :

$new_str = preg_replace('#<(p|span)[^>]+>#', '<$1>', $old_string); 
+0

grazie, terrò a mente l'opzione php per il futuro – mjr

5
UPDATE yourTable SET text=REPLACE(text,"\n","<br />") 

questo funziona per la vostra prima domanda.

+0

Questa non è una sintassi SQL valida – Crack

+0

@Crack, yeah mi dispiace. Troppo caldo e umido in Germania adesso. – Jacob

+0

Heh, condividi il tuo sole. 19 ° C e piovoso in Polonia;) – Crack

1

Poiché si utilizza ExpressionEngine, è possibile modificare il formato di ogni campo in XHTML. Aggiungerà il markup <br /> quando visualizzato sul front-end. scommetti per mantenere i tuoi dati puliti e lasciare la formattazione al parser mostrandoli.

+0

In realtà sto passando da un fieldtype textarea con formattazione automatica a NSM TinyMCE e voglio conservare le interruzioni, se non fare questo il testo va tutto insieme, se non stavo cambiando fieldtypes la tua soluzione sarebbe buona – mjr