• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

astro__pc

[RESOLVIDO] Passar conteudo da varaivel de PHP para JavaScript

5 mensagens neste tópico

Tenho uma duvida em php.

É o seguinte.

Tenho uma base de dados  onde à um campo do tipo "TEXT".

Este campo guarda texto da descrição de artigos.

O texto a guardar pode ser um texto com varias mudanças de linha

Estas mudanças de linha não são <br> de html, e na base da dados NÃO é representado com nenhum caracter (tipo \n).

Eu necessito que passar o conteudo dessa variavel para uma outra varaivel em javascript.

Ao passar essa variavel para javascript dá erro de javascript.

Depois de varios testes, descobri que o problemas está nas mudanças de linhas.

Tentei usar a função str_replace() , mas não sei qual é a sub-string que representa a mudança de linha.

Como posso retirar essas mudanças de linhas em PHP?

Existe outra forma de passar o conteudo da variavel para javascript?

Nota:

Um exemplo destas mudanças de linha é quando se vai a base de dados alterar o campo, dando varias linhas em branco (usando o enter).

Espero ter conseguido explicar a situação

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deixa-me ver, estás a enviar para a BD texto com varias linhas e não consegues que depois ao imprimir esse resultado apareça as linhas separadas.

É isso??

para isso basta usares a função nl2br():

exemplo:

print nl2br($variavel);

É tudo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é bem isso.

No site/aplicação que tou a desenvolver existe um modulo (free) que gera o conteudo que vai ser colocado na variavel do tipo TEXT da base de dados.

A função desse modulo é gerar texto html.

Exemplo:

<STRONG>Ref:</STRONG> xpto teste
<br>
<STRONG>Ref:</STRONG> xpto teste2

Em algumas situações o modulo coloca mudanças de linha.

Essas mudanças de linhas podem ser: <br> ,\n, e "um enter invisivel  :hmm:"

É no "enter invisivel" é que está o probelma.

Este "enter invisivel" só é visivel quando vou directamente à base de dados ver o valor do campo.

Esse "enter invisivel" pode ser visto quando se altera directamente o campo na base de dados (usando uma aplicação que administra a base de dados), dando varios [enter] para separar 2 linhas de texto.

para isso basta usares a função nl2br():

Eu não kero colocar <br> em substituição das mudanças de linhas

Código que está a dar erro

$aux= obtemCampoTextoBaseDado($id);//$aux fica com o texto que esta no campo da base de dados
print"$aux";//teste - mostra o conteudo da variavel
(....)
//preciso de fazer uma verifiacação em JavaScript. Logo tenho de passar o canteudo da varaivel $aux para uma outra em javascript
//Codigo em java script
_conteudo=<?php echo"\"". $aux ."\""; ?>; //É quando passa por esta linha que dá erro. O erro que aprarece na starus bar é "Constante de cadeia não terminada"
alert(""+_conteudo);//teste para ver o conteudo da variavel
(.....)

Já tentei fazer isto mas continua a dá erro

str_replace();//com o caracter asccii 13

ou

explode();//com o caracter asccii 13

implode();

Nota: tou a usar PHP4 , MySql e YellowTip

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de mais algum tempo perdido em pesquisa e tentativas, descobri a solução para o meu problema.

Como tinha dito a solução passava por retirar as mudanças de linhas que o texto contem.

Já tinha tentado retirar (com a função str_replace() ) o ascii (13), mas não chega.

Em PHP a mudança de linha é representado por dois caracteres.

Assim é necessario retirar:

ascii (10) - nova linha

ascii (13) - carriage return

O "enter invisivel" é a representação dos dois codigos ascii

Isto fez-me pensar, o porque de ser necessario retirar as mudanças de linhas quando se pretende passar o texto (numa string em PHP) para javascript. Alguem sabe porquê?

Nota: deixo aki uma maneira de ver os caracteres ascii de uma string em PHP

for($i=0; $i < strlen($aux); $i++){

  $a1= substr($aux,$i,1);

  print"<br>".$a1." ".ord($a1);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu realmente não te sei explicar isso, em principio seria obvio que desse para fazer um simples print ou então ainda não percebi bem qual era o problema...

Quanto à nova linha, sempre que o "RETURN" é pressionado é enviado para a aplicação 0Ah e 0Dh que corresponde ao 10 e 13 em decimal, tenho usado isto ultimamente em Assembly (que me ta a dar dores de cabeça).

Cumps

Pedantilva

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora