Eu tenho isto:
$text = '
hello world
hello
';
Como removo
apenas se estiver em sua própria linha? Portanto, com o exemplo acima, o segundo
deve ser removido. Os resultados devem ser:
$text = '
hello world
hello
';
O que eu tentei até agora
Via str_replace()
, eu posso:
$text = str_replace(' ', '', $text);
Mas isso removerá todas as instâncias
, não apenas quando estiver em sua própria linha.
php
str-replace
Henrik Petterson
fonte
fonte
$text = str_replace('\n'.' '.'\n', '', $text);
mas não funcionou. Veja .str_replace()
vez de julgar minha experiência. =)Respostas:
Eu já tentei essa abordagem e recebo a saída que você deseja
Minha saída no meu local é esta:
fonte
Minha abordagem seria:
Resultando no seguinte código:
fonte
texto vazio, sem que a linha inteira seja remota: /. Além disso, tenha em mente que não sou eu que diminuímos a sua resposta :) Meu comentário foi apenas uma mensagem amigável :)Talvez algo parecido com isto:
http://sandbox.onlinephpfunctions.com/code/f4192b95e0e41833b09598b6ec1258dca93c7f06
(isso funciona no PHP5 , mas de alguma forma não funciona em algumas versões do PHP7 )
Alternativa seria:
fonte
Se você conhece seus caracteres de final de linha e
sempre é seguido por uma nova linha:Saída (algum espaço em branco inicial perdido na formatação aqui):
Advertência: qualquer linha que termine com um
precedente com outro conteúdo também será afetada; portanto, isso pode não atender às suas necessidades.fonte
str_replace()
!
? Por exemplo:" \n"
Você pode usar uma expressão regular para isso, usando os modificadores DOTALL e MULTILINE, juntamente com as asserções:
(?sm)
: DOTALL (s) MULTILINE (m)(?<=\n)
: preceder a nova linha (não faz parte da partida)\s* \s*
: único & nbsp; com espaço em branco circundante opcional(?=\n)
: nova linha à direita (não faz parte da partida)fonte
Você pode dividir em linhas e substituir
a sequência vazia nas linhas que contêm apenas um
espaço em branco e.Manteremos as terminações de linha originais, capturando-as.
Resultado:
fonte