separado print por pass parse convertir comas array php string line-breaks

php - print - ¿Cómo poner una cadena en matriz, dividida por una nueva línea?



php join array string (17)

David: Gran dirección, pero te perdiste. esto funcionó para mí:

$array = preg_split("/(/r/n|/n|/r)/", $string);

Tengo una cadena con saltos de línea en mi base de datos. Quiero convertir esa cadena en una matriz, y para cada nueva línea, salte un lugar de índice en la matriz.

Si la cadena es:

Mi texto1
Mi texto2
Mi texto3

El resultado que quiero es esto:

Array ( [0] => My text1 [1] => My text2 [2] => My text3 )


Este método siempre me funciona:

$uniquepattern="gd$#%@&~#"//Any set of characters which you dont expect to be present in user input $_POST[''text''] better use atleast 32 charecters. $textarray=explode($uniquepattern,str_replace("/r","",str_replace("/n",$uniquepattern,$_POST[''text''])));


No necesita funciones preg_ * ni patrones pregregados ni str_replace dentro de, etc. para poder romper con éxito una cadena en matriz mediante nuevas líneas. En todos los escenarios, ya sea Linux / Mac o m $, esto servirá.

<?php $array = explode(PHP_EOL, $string); // ... $string = implode(PHP_EOL, $array); ?>

PHP_EOL es una constante que contiene los caracteres de salto de línea utilizados por la plataforma del servidor.


PHP ya conoce los caracteres de nueva línea del sistema actual. Solo usa la constante EOL.

explode(PHP_EOL,$string)


Para cualquiera que intente visualizar cronjobs en un crontab y frustrarse en cómo separar cada línea, use explode:

$output = shell_exec(''crontab -l''); $cron_array = explode(chr(10),$output);

usar ''/ n'' no parece funcionar, pero chr (10) funciona bien: D

Espero que esto le ahorre algunos dolores de cabeza a alguien.


Puede hacer un $ string = nl2br ($ string) para que su salto de línea se cambie a

<br />.

De esta forma, no importa si el sistema usa / r / n o / n o / r

Entonces puedes alimentarlo en una matriz:

$array = explode("<br />", $string);


Puede usar la función de explode , usando " /n " como separador:

$your_array = explode("/n", $your_string_from_db);

Por ejemplo, si tienes este fragmento de código:

$str = "My text1/nMy text2/nMy text3"; $arr = explode("/n", $str); var_dump($arr);

Obtendrás esta salida:

array 0 => string ''My text1'' (length=8) 1 => string ''My text2'' (length=8) 2 => string ''My text3'' (length=8)


Tenga en cuenta que debe usar una cadena de comillas dobles , por lo que /n realidad se interpreta como un salto de línea.
(ver la página del manual para más detalles)


Siempre he usado esto con gran éxito:

$array = preg_split("//r/n|/n|/r/", $string);

(actualizado con el final / r, gracias @LobsterMan)


no me permitirá comentar la respuesta de hesselbom (no tengo suficiente reputación), así que agregaré la mía ...

$array = preg_split(''//s*/R/s*/'', trim($text), NULL, PREG_SPLIT_NO_EMPTY);

Esto funcionó mejor para mí porque también elimina los espacios en blanco iniciales (segundos / s *) y finales (primeros / s *) automáticamente y también omite líneas en blanco (el indicador PREG_SPLIT_NO_EMPTY).

- = OPCIONES = -

Si desea seguir liderando el espacio en blanco, simplemente deshágase del segundo / s * y conviértalo en un rtrim () en su lugar ...

$array = preg_split(''//s*/R/'', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);

Si necesita mantener líneas vacías, elimine el indicador NULL (es solo un marcador de posición) y PREG_SPLIT_NO_EMPTY, como ese ...

$array = preg_split(''//s*/R/s*/'', trim($text));

O manteniendo tanto los espacios en blanco iniciales como las líneas vacías ...

$array = preg_split(''//s*/R/'', rtrim($text));

No veo ninguna razón por la que alguna vez quieras seguir rastreando espacios en blanco, así que sugiero dejar los primeros / s * allí. Pero, si todo lo que quieres es dividir por una nueva línea (como sugiere el título), es ESTO simple (como lo menciona Jan Goyvaerts) ...

$array = preg_split(''//R/'', $text);


Un salto de línea se define de forma diferente en diferentes plataformas, / r / n, / r o / n.

Usando RegExp para dividir la cadena, puede hacer coincidir los tres con / R

Entonces para su problema:

$array = preg_split (''/$/R?^/m'', $string);

¡Eso coincidiría con los saltos de línea en Windows, Mac y Linux!


Una alternativa a la respuesta de David, que es más rápida (mucho más rápida) es usar str_replace y explode .

$arrayOfLines = explode("/n", str_replace(array("/r/n","/n/r","/r"),"/n",$str) );

Lo que está sucediendo es:
Dado que los saltos de línea pueden venir en diferentes formas, str_replace / r / n, / n / r, y / r con / n en su lugar (y se conservan / n originales).
Luego explota en /n y tienes todas las líneas en una matriz.

Hice un punto de referencia en el src de esta página y dividí las líneas 1000 veces en un bucle for y:
preg_replace tomó una media de 11 segundos
str_replace & explode tomó una media de aproximadamente 1 segundo

Más detalles e información de Bencmark en mi foro


Usando cualquier caracter especial entre la cadena o el salto de línea /n usando PHP explotar podemos lograr esto.


Usar solo el paquete ''base'' es también una solución para casos simples:

> s <- "a/nb/rc/r/nd" > l <- strsplit(s,"/r/n|/n|/r") > l # the whole list... [[1]] [1] "a" "b" "c" "d" > l[[1]][1] # ... or individual elements [1] "a" > l[[1]][2] [1] "b" > fun <- function(x) c(''Line content:'', x) # handle as you wish > lapply(unlist(l), fun)


puedes usar esto:

/str_getcsv($str,PHP_EOL);


$str = "My text1/nMy text2/nMy text3"; $arr = explode("/n", $str); foreach ($arr as $line_num => $line) {     echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />/n"; }

verdadero conjunto:

$str = "My text1/nMy text2/nMy text3"; $arr = explode("/n", $str); $array = array(); // inisiasi variable array in format array foreach ($arr as $line) { // loop line by line and convert into array $array[] = $line; }; print_r($array); // display all value echo $array[1]; // diplay index 1

Incrustar en línea:

body, html, iframe { width: 100% ; height: 100% ; overflow: hidden ; }

<iframe src="https://ideone.com/vE1gst" ></iframe>


<anti-answer>

Como se han especificado otras respuestas, asegúrese de usar explode lugar de split porque a partir de PHP 5.3.0 la split está en desuso. es decir, la siguiente NO es la forma en que desea hacerlo:

$your_array = split(chr(10), $your_string);

LF = "/ n" = chr (10), CR = "/ r" = chr (13)

</anti-answer>


explode("/n", $str);

El "(en lugar de '') es bastante importante ya que de lo contrario, el salto de línea no sería interpretado.