2011-08-14 11 views
19

puedo hacer:explotar php área de texto (en nuevas líneas)

explode("\n", $_POST['thetextarea']); 

y hacer que funcione en todas las plataformas? (La pregunta que estoy preguntando es ¿Alguna vez será \ r \ n y no sólo \ n ")

EDIT:

me olvidó mencionar que estoy ahorrando $ _POST [ 'thetextarea'] a un MySQL VARCHAR base de datos 255. parece \ r \ n se convierte en \ n

+1

posible duplicado de http://stackoverflow.com/ questions/760282/do-line-endings-distinctions-apply-for-html-forms – arnaud576875

+0

Si el campo de texto contiene '\ r \ n', la división en líneas nuevas seguirá funcionando, y solo mantendrá extraños retornos de carro en las líneas. – mario

Respuesta

52

esto va a hacer el truco dado \r\n, \r o \n:

preg_split('/\r\n|[\r\n]/', $_POST['thetextarea']) 
+0

Sí. Funcionó para mí también, no el \ r \ nuno. – khany

17

que puedes usar:..

explode("\r\n", $_POST['thetextarea']); 

siempre será el mismo

los navegadores y otros agentes de usuario harán Seguro que son: -)

Consulte http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2.1 para obtener más información.

+1

Sin embargo, no todos los agentes de usuario son navegadores. – mario

+0

@mario: vea la respuesta actualizada – PeeHaa

+0

@mario: también según las especificaciones de HTML5 (borradores que conozco) las líneas se terminan con 'CRLF'. http://dev.w3.org/html5/spec/Overview.html#the-textarea-element si estoy correcto – PeeHaa

8

También es posible usar el PHP_EOL constante:

explode(PHP_EOL, $_POST['thetextarea']); 
+9

¿PHP_EOL no usaría simplemente el linebreak de la plataforma actual? Si es así, no lo quieres aquí :) – PeeHaa

0

se puede hacer algo como esto:

$text = trim($_POST['textareaname']); 
$text = nl2br($text); 
+0

"Es importante recordar que esta función NO reemplaza las líneas nuevas con las etiquetas
. Más bien, inserta una etiqueta
antes de cada línea nueva, ¡pero aún conserva las nuevas líneas!" - chico en php.net manual – Robbe

Cuestiones relacionadas