Foros del Web » Programando para Internet » PHP »

eliminar salto de linea

Estas en el tema de eliminar salto de linea en el foro de PHP en Foros del Web. estoy usando un editor de texto hecho en javascript (sirve para agregar negritas, cambiar el color del texto, etc... onda hotmail) para agregar/modificar el texto ...
  #1 (permalink)  
Antiguo 21/04/2004, 20:22
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
eliminar salto de linea

estoy usando un editor de texto hecho en javascript (sirve para agregar negritas, cambiar el color del texto, etc... onda hotmail)
para agregar/modificar el texto de una pagina que se guarda un campo de una base de datos como html, el tema es que cuando quiero leer lo que esta guardado desde el textarea, para modificarlo, si este tiene un salto de linea no me lo lee.

un ejemplo:

asi lo lee:

<p>hola</p><p>todos</p>

asi no:

<p>hola</p>
<p>todos</p>

como no conosco mucho de javascript, me pregunto si hay alguna forma en PHP para que antes de guardar el texto en la base se borren estos saltos de linea.
  #2 (permalink)  
Antiguo 21/04/2004, 21:55
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
en definitiva creo que no estás guardando bien el código. Recuerda usar el campo tipo text de mysql (si es que usas mysql).
Sería bueno que incluyeras el código que usas.
Supongo que el error está a la hora de guardar, mas que a la hora de leer, ya que yo mismo he insertado html en campos de bases de datos para leerlo y generar así una página, y no he tenido ese problema, cuando mas he tenido el problema de que si el usuario no inserta un salto de linea, a la hora de desplegar el texto este se sigue de corrido, pero eso se soluciona con la función de php wordwrap o nl2br.
espero tu retroalimentación, Saludos...
  #3 (permalink)  
Antiguo 21/04/2004, 23:00
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
sism82 te cuento que la informacion se graba perfectamente en la base (que si es mysql, y si uso un campo text) y tampoco tengo problemas al sacarla.
Lo que pasa es que yo le quiero usar con un sistema en javascript que si bien se ve como un textarea en ningun lado tengo algo como:

<textarea></textarea>

donde yo podria hacer:

<textarea><?=$lainfo?></textarea>

sino que la tengo que cargar con una variable de javascript que no se porque (repito que conosco casi nada de javascript) si hay algun salto de linea no me lo lee y por ende no me lo carga en el "textarea".
Pero si yo hago un echo en cualquier otro lado no hay problemas.

Es mas, por ejemplo, guarde en la base algo asi:

<p>hola</p>
<p>todos</p>

Y no me lo leia, entre a la base, lo cambie por :

<p>hola</p><p>todos</p>

actualice y si me lo leia.
__________________
oohh... quisiera ser godines!!!
  #4 (permalink)  
Antiguo 22/04/2004, 00:01
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
ok, got it, te molesto con el código relevante que utilizas?
el de JS, necesito ver como estas "cargando" la variable de JS
  #5 (permalink)  
Antiguo 22/04/2004, 10:03
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
bien.... empezemos por lo primero: yo tengo un archivo PHP y dos archivos JS, en el primero luego de buscar un rato largo encontre esto:

<script>idEdit.document.body.innerHTML=plainmsg.in nerHTML;</script>

y lo cambie por esto:

<script>idEdit.document.body.innerHTML="<?=$cont?> ";</script>

donde $cont es la info que saco de la pagina.
Despues dentro de uno de los archivos JS hay muchas funciones y en varias nombra idEdit.document.body.innerHTML y que como no entiendo ninguna te las paso a todas:

Código PHP:
function get_html() {
if (
bMode) {
cleanupHTML()
return 
idEdit.document.body.innerHTML
}
else
return 
idEdit.document.body.innerText;
}

function 
put_html(sVal) {
if (
bMode)
idEdit.document.body.innerHTML=sVal
else
idEdit.document.body.innerText=sVal
}

function 
setMode(bNewMode) {
if (
bNewMode!=bMode) {
if (
bNewMode) {
var 
sContents=idEdit.document.body.innerText
idEdit
.document.open()
idEdit.document.write(sHeadEditMode)
idEdit.document.close()
idEdit.document.body.innerHTML=sContents
}
else {
cleanupHTML()
var 
sContents=idEdit.document.body.innerHTML
idEdit
.document.open()
idEdit.document.write(sHeadHtmlMode)
idEdit.document.close()
idEdit.document.body.innerText=sContents
}
bMode=bNewMode
for (var i=0;i<htmlOnly.children.length;i++)
htmlOnly.children[i].disabled=(!bMode)
}
idEdit.focus()

(esta ya esta como para el foro de javascript, no? )

A todo esto te cuento que por lo que vi en el PHP el "textarea" se crea asi:

<IFRAME NAME=EditCtrl WIDTH=97% height="100%"></IFRAME>
  #6 (permalink)  
Antiguo 22/04/2004, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
A todo esto te cuento que por lo que vi en el PHP el "textarea" se crea asi:

<IFRAME NAME=EditCtrl WIDTH=97% height="100%"></IFRAME>
Eso sigue siendo HTML .. (y por lo demás es un iframe .. no un textarea que sería un objeto de formulario)

Mi pregunta es:

¿que deseas hacer realmente .. cuan es el objetivo de todo esto?.

Llamar a un codigo (HTML, PHP, etc) a golpe de link sin recargar la página? .. o te dá igual si se racarga la página completa? ..

Te lo menciono por qué si quieres hacer lo primero una opción fácil de implemtarlo es con el iframe o un frame. El paso de parámetros entre tu link y el iframe que quieres "recargar" con otra página es taréa integra de Javacript.

La opción de "recargar la página completa" en PHP simplemente llama a tu código por un include("pagina.tal") donde lo requieras (en la estructura de tablas/capas) que uses.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 22/04/2004, 16:50
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
te cuento mas o menos cual es el uso que le tengo que dar a todo esto:
Voy a abrir una pagina PHP que va a tener varios textos y titulos que se cargan de una base. Lo que yo quiero es hacer es que cuando yo ingrese a esa pagina como administrador al lado de cada texto o titulo me aparesca un boton "editar" que me abra en un popup el famoso "textarea" para poder cambiar el texto, tamaño, color, etc.
Ya todo esta hecho y funciona bien. El unico problema que tengo es, como dije al principio, que si la informacion guardada en la base tiene un salto de linea no me lo "carga" (no me da error) simplemente no se vizualisa en el "textarea".
En realidad la solucion la deberia buscar por el lado del javascript, pero si puedo hacer lo de eliminar los saltos de linea tambien seria una solucion valida.
  #8 (permalink)  
Antiguo 22/04/2004, 17:02
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 5 meses
Puntos: 0
hola

Hola, luego creo que tienes que enfrentarte al uso de las comillas simples en la bd, javascript lo interpretaria mal y no correo bien el js, ya me pasó una vez, sin embargo me gusta el tema asi que posteo mi opinion.
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #9 (permalink)  
Antiguo 22/04/2004, 19:08
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
la verdad, con esas funciones solo puedo darte una opinión parcial, no me dicen nada, hace falta ver desde donde se mandan llamar y bajo que circunstancias.
Si te sirve de algo puede reemplazar los espacios asi:
<?php
$cadena = "esta cadena tiene un \n salto de linea";
$nuevaCadena = str_replace("\n"," ",$cadena);
echo nl2br($cadena);
echo nl2br($nuevaCadena);
?>
las ultimas dos lineas son solo para corroborar que se eliminaron los saltos de linea "\n" la función que los reemplaza es str_replace, y aqui los reemplace por un espacio en blanco, tu puedes usar cualquier otra cadena.

Si te sigue dando problemas incluye todos los códigos (aunque si es mucho no se si este permitido) o me los puedes enviar a mi correo [email protected] , en cuanto pueda los checo y te doy respuesta. saludos
  #10 (permalink)  
Antiguo 22/04/2004, 19:11
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
ups... digo, el código que te incluí es para reemplazar saltos de linea, realmente la función str_replace reemplaza cualquier cadena, en este caso "\n"... saludos
  #11 (permalink)  
Antiguo 22/04/2004, 19:48
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
andinistas: Todas las opniones son bienvenidas... Pero no tengo comillas en lo que guardo... creo

sism82: una cosa, yo lo que que guardo o abro en la base lo hago del modo normal:

Código PHP:
$sql="UPDATE contenido SET ".$camp."='".$ok."' WHERE id=".$id;
mysql_query($sql$conn); 
ó

Código PHP:
$cont="SELECT contenido.".$camp." as cont FROM contenido WHERE id=".$id;
$cont=mysql_query($cont,$conn); 
y lo que quiero saber es como hacerlo para que me elimine los saltos de linea... el tema en la cadena que yo tengo no dice "\n" sino que simplemente una linea esta debajo de la otra, osea: no esta asi:

<p>algo</p>\n<p>algo</p>

sino que esta asi:

<p>algo</p>
<p>algo</p>

lo mismo puedo usar str_replace("\n"," ",$cadena);???

__________________
oohh... quisiera ser godines!!!

Última edición por safe; 22/04/2004 a las 19:57
  #12 (permalink)  
Antiguo 22/04/2004, 20:15
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
si es un salto de linea si, \n te representa el salto de linea, independientemente de como fue introducido...
  #13 (permalink)  
Antiguo 22/04/2004, 20:15
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
si es un salto de linea si, \n te representa el salto de linea, independientemente de como fue introducido...
  #14 (permalink)  
Antiguo 22/04/2004, 21:04
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
no funciono .

adentrandome un poco mas en donde puede estar el error me di cuenta que yo cargo la info asi:

<script>idEdit.document.body.innerText="<?=$cont_o k?>";</script>

entonces si $cont_ok es "<x>loqueseaqueponga</x>" esto me quedaria asi:

<script>idEdit.document.body.innerText="<x>loquese aqueponga</x>";</script>

pero si $cont_ok es "<x>loqueseaqueponga</x>
<x>otracosa</X>"

quedaria asi:

<script>idEdit.document.body.innerText"<x>loquesea queponga</x>
<x>otracosa</X>" ;</script>

entonces javascript me dice que la constante de la cadena esta sin terminar (osea: error).
Ahora bien, esto no deberia mas o menos hacer lo que yo quiero:

Código PHP:
$cont="SELECT contenido.texto as cont FROM contenido WHERE id='1'";
$cont=mysql_query($cont,$conn);
$rs_cont=mysql_fetch_array($cont);
$cont_ok=str_replace("\n", " ", $rs_cont["cont"]);
<script>idEdit.document.body.innerText="<?=$cont_ok?>";</script>
  #15 (permalink)  
Antiguo 22/04/2004, 22:55
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
$cadena = $_POST['texto'];
$nuevaCadena = nl2br($cadena);
$nuevaCadena = str_replace("<br />","&nbsp;",$nuevaCadena);
echo $nuevaCadena;

eso debe de funcionarte, ya lo probé y quita los saltos de linea recibidos desde un textarea por POST, nada mas aplicalo a tu $cont_ok

saludos
  #16 (permalink)  
Antiguo 23/04/2004, 00:03
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 14 años, 10 meses
Puntos: 10
Bue! por fin logre solucionar mi problema .

sism82 estabas tan cerca !!!!!!!!!!!!!!!!!!!!!!!!

en vez de: str_replace("\n"," ",$cadena);

era: str_replace("\r\n"," ",$cadena);

lo uso antes de guardarlo y tambien (por las dudas) cada ves que lo leo...

Les cuento tambien que 15 segundo antes de encontrar esta solucion habia encontrado la solucion en javascript que se la paso por si les interesa:

function mandar(){
var t1 = idEdit.document.body.innerHTML;
document.getElementById("ok").value = t1.replace(/\r\n/g, ' ');

fmain.submit();
}

donde idEdit.document.body.innerHTML es el contenido del "textarea" y document.getElementById("ok") un input hidden al que le paso el valor del primero despues de reemplazar los saltos de line con la funcion replace().

Muchicimas gracias a todos!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:27.