astro__pc Posted October 13, 2006 at 08:31 AM Report #56890 Posted October 13, 2006 at 08:31 AM 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
Ped@ntilva Posted October 13, 2006 at 10:00 AM Report #56894 Posted October 13, 2006 at 10:00 AM 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?
astro__pc Posted October 13, 2006 at 12:20 PM Author Report #56917 Posted October 13, 2006 at 12:20 PM 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 linhasCó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
Solution astro__pc Posted October 13, 2006 at 03:23 PM Author Solution Report #56951 Posted October 13, 2006 at 03:23 PM 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); }
Ped@ntilva Posted October 13, 2006 at 09:07 PM Report #57049 Posted October 13, 2006 at 09:07 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now