Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ticarp

\n newlines

Recommended Posts

Fala galera... a muito venho tentando identificar as newlines \n via ER... e ñ consigo...por exemplo...eu precisava excluir de meu texto todos os paragrafos vazios...sendo e texto tem essa configuração:<p>sdasdasdasda</p><p>asdadaasdsadasd</p><p></p><p></p><p>sadadasdasdadasdadadas</p>perceba q sempre existe uma newline entre a tag de abertura e a fechamento do paragrafo...resolvi esse problema usando a seguinte ER:$p_vazios = "|<p>[ ,]*</p>|";isso mesmo... eu tenho q dar um ENTER no meio da ER pra simular a newline... tentei de todas as formas alguma maneira de usar \n na minha ER mas ñ consegui...É possível isso??e se eu quiser substituir todas as \n por algum texto?eu tenho primeiro q passar a nl2br e depois substituir as <br />??resumindo...como escrevo uma ER q substitua \n por alguma coisa??Abração, Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui!!!! :D $p_vazios = "|<p>[ \r\n]*</p>|";agora a dúvida.... pra q serve o \r?? e quais outros usos dele??eu me baseei num exemplo no php.net pra usa-lo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummmm... então no caso eu poderia usar só o retorno de carro? \r... ao invés de \r\n?confesso q continuo sem entender direito!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora estou meio confuso...

O \r é interpretado pelo php como retorno de carro, ou seja, ele retorna a execução para o inicio da proxima linha.

ñ é o \n q retorna a execução para o inicio da proxima linha???voltando ao meu exemplo:<p>sdasdasdasda</p><p>asdadaasdsadasd</p><p></p><p></p><p>sadadasdasdadasdadadas</p>ñ expressão regular usei \n e ñ funcionou... usei \r e ñ funcionou... agora quando usei \r\n funcionou...gostaria de saber oq exatamente cada um deles faz.. e oq representam quando usados em sequencia...abração, Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sistemas baseados no Unix utilizam \n como final de linha, sistemas baseados no Windows usam \r\n e sistemas baseados no Macintosh usam \r.

 

você pode fazer assim e passar tudo para \n:

$code = preg_replace("#(\r\n|\r)#", "\n", $code);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum!!

Entendi Fabyo!

 

Muito bom saber disso... só uma questão final...

 

Se utilizarmos \r\n... estaremos "sendo entendidos" em qualquer sistema (Unix, Windows, Macintosh)?

 

Ou o Unix só reconhece final de linha com \n e o mac só com \r?

 

Ah... esse final de linha necessariamente implica no ponteiro ser movido pro inicio da proxima linha né??

 

Abração, Tiago.

 

Ps.: Esse negócio de expressões regulares vicia!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se utilizarmos \r\n... estaremos "sendo entendidos" em qualquer sistema (Unix, Windows, Macintosh)?

 

nao o \r\n é só o windows que entende e como falei acima, por isso depende do sistema que você ta fazendo como por exemplo gravar em um txt se nao usar o pulo de linha certo dependendo do editor de texto que você usar para abrir o txt podera aparecer caracteres estranhos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei saquei!!!no caso... essa minha ER:$p_vazios = "|<p>[ \r\n]*</p>|";só sera identificada caso o usuario esteja navegando numa plataforma windows, certo?caso ele esteja num browser num Mac os paragrafos em branco ñ serão excluidos...vou testar algo assim pra vê se continua funcionando no windows...$p_vazios = "|<p>( |\r\n|\r|\n)*</p>|";será?!?!vamos ver! :D Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Fabyo!!!Olha só!!!$p_vazios = "#(<p>)(\r\n|\r|\n| )*(</p>)#";consegui assim!!!!é +- como aquela q você postou... oq quer q ele ache: \r\n | \n | \r é tranformado em nada ""...tá funcionando aqui!!!só uma ultima dúvida... o sistema q você fala... windows, unix, mac... é o da máquina do usuario?? ou tem algo haver com o host?Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ticarp, tem haver com o hostvoce pode usar o modificador s tambem, ele funfapor ex:

<?$str='<p>sdasdasdasda</p><p>asdadaasdsadasd</p><p></p><p></p><p>sadadasdasdadasdadadas</p>';preg_match_all("#<p>(.*?)<\/p>#s",$str,$matches);print_r($matches);?>

valeu[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala red_neck...eu ja tinha lido sobre o modificador s...só que no php.net diz:

If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines.

eu pensei q ele ñ funcionaria já q eu quero eliminar apenas os paragrafos vazios... e pelo oq eu havia entendido ele casa todos os caracteres incluindo as newlines....Agora sobre a questão do host... agora me embananei um pouco...ja que o sistema que o Fabyo se referia diz respeito ao host... minha ER usando apenas \n deveria funcionar já q meu host é Linux..e funcionou apenas com \r\n q é o utilizado em sistemas baseados em Windows... :blink: :blink: :blink: E agora José?? :( Tiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, ñ funcionou com esse \s ñ... pelo mneos no meu servidor...assim... a minha pergunta é a seguinte... posso ficar tranquilo já está funcionando com \r\n, independente da plataforma q o usuario esteja irá funcionar perfeitamente... é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ufaaaaaaaaaaa!!!!! :D meus problemas se acabariummmm!!!!no meus host (linux) ta funcionando com \r\n :blink: mas pelo menos funciona!!!!!! :D :Dvaleu galera!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.