Tengo esto:
$text = '
hello world
hello
';
¿Cómo elimino
solo si está en su propia línea? Entonces, con el ejemplo anterior, el segundo
debe eliminarse. Los resultados deberían ser:
$text = '
hello world
hello
';
Lo que he probado hasta ahora
Vía str_replace()
, puedo:
$text = str_replace(' ', '', $text);
Pero eso eliminará todas las instancias de
, no solo cuando está en su propia línea.
php
str-replace
Henrik Petterson
fuente
fuente
$text = str_replace('\n'.' '.'\n', '', $text);
pero no funcionó. Ver .str_replace()
lugar de juzgar mi experiencia? =)Respuestas:
Ya he probado este enfoque y obtengo el resultado que deseas
Mi salida en mi local es esta:
fuente
Mi enfoque sería:
Resultando en el siguiente código:
fuente
con texto vacío, sin remota toda la línea: /. Además, tenga en cuenta que no fui yo quien rechazó su respuesta :) Mi comentario fue solo un mensaje amistoso :)Tal vez algo como esto:
http://sandbox.onlinephpfunctions.com/code/f4192b95e0e41833b09598b6ec1258dca93c7f06
(que funciona en PHP5 , pero de alguna manera no funciona en algunas versiones de PHP7 )
La alternativa sería:
fuente
Si conoce sus caracteres de fin de línea y
siempre le sigue una nueva línea:Salida (algunos espacios en blanco iniciales perdidos en el formato aquí):
Advertencia: cualquier línea que termine con una
con otro contenido anterior también se vería afectada, por lo que esto puede no satisfacer sus necesidades.fuente
str_replace()
!
? Por ejemplo:" \n"
Puede usar una expresión regular para esto, usando los modificadores DOTALL y MULTILINE junto con aserciones de búsqueda:
(?sm)
: DOTALL (s) MULTILINE (m)(?<=\n)
: línea anterior (no es parte del partido)\s* \s*
: single & nbsp; con espacio en blanco circundante opcional(?=\n)
: nueva línea final (no es parte del partido)fuente
Puede dividir en líneas y luego sustituir
la cadena vacía en las líneas que solo contienen un
espacio en blanco.Mantendremos las terminaciones de línea originales al capturarlas.
Salida:
fuente