2010-08-20 12 views
12

Tengo una base de datos MySQL de la cual extraigo una cadena que es una lista de palabras separadas por nueva línea. Ahora quiero eliminar solo la línea nueva posterior. He intentado utilizar preg_replace comoEliminar trailing newline

$string = preg_replace('/\n/','',$string); 

Funciona, pero todas las nuevas líneas en las cuerdas se retiran :( Por favor, ayudar a

Gracias a todos

Respuesta

27

Es necesario añadir al final de la línea de anclaje.:

$string = preg_replace('/\n$/','',$string); 

que es mejor evitar regex para una sustitución tan simple. Esto se puede hacer fácilmente usando rtrim como:

$string = rtrim($string); 

rtrim sin segundo argumento se eliminará el whitespace carbón arrastrando los cuales incluyen:

  • nueva línea
  • espacio
  • tabulador vertical
  • pestaña horizontal
  • retorno de carro
+0

+1 para señalar esta gran función de utilidad. – Scott

+0

¿Esto elimina todos los espacios en blanco, o solo dura? – cli

7

No use expresiones regulares para una tarea tan trivial. Puede usar PHP rtrim() (posiblemente con "\n" como segundo parámetro) o substr() (como substr($string, 0, -1)) o RTRIM() de MYSQL.

+3

+1 para obtener el valor recortado del db – Gordon

+0

Me gusta mucho esta respuesta –