Jump to content

[RESOLVIDO] Passar conteudo da varaivel de PHP para JavaScript


astro__pc

Recommended Posts

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

Link to comment
Share on other 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  ?"

É 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

Link to comment
Share on other 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);

}

Link to comment
Share on other 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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.