Foros del Web » Programando para Internet » PHP »

como encuentro y reemplazo saltos de linea?

Estas en el tema de como encuentro y reemplazo saltos de linea? en el foro de PHP en Foros del Web. Bueno, lo de encontrar un solo salto de linea y reemplazarlo por lo que sea me funciona bien haciendo str_replace("\n","salto",$cadena); pero lo que no me ...
  #1 (permalink)  
Antiguo 19/11/2002, 00:05
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
como encuentro y reemplazo saltos de linea?

Bueno, lo de encontrar un solo salto de linea y reemplazarlo por lo que sea me funciona bien haciendo

str_replace("\n","salto",$cadena);

pero lo que no me anda es encontrar mas de un salto. O sea, yo quiero buscar 3 saltos juntos, para reemplazarlos por uno solo y asi solo permitir un espacio en blanco entre parrafos.

Intente con esto:

ereg_replace("(\n){3,}","\n\n",$cadena);

Y esto

str_replace("\n\n\n","\n\n",$cadena);

Pero no encuentra ni reemplaza nada. Cual seria la forma correcta?
  #2 (permalink)  
Antiguo 19/11/2002, 04:00
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
utiliza la funcion nl2br() jje :)
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 19/11/2002, 11:27
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
No es lo que quiero, no quiero reemplazar los saltos por <br>, quiero guardar el texto en la bd con \n y como maximo 2 seguidos.

Alguien que sepa de esto y me pueda ayudar please!
  #4 (permalink)  
Antiguo 19/11/2002, 12:19
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Para chequear solamente...

estás asignado el resultado de ereg_replace() de nuevo a la variable, no ?

Código PHP:
<?
$cadena 
ereg_replace("(\n){3,}","\n\n",$cadena);
?>
  #5 (permalink)  
Antiguo 19/11/2002, 12:40
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Si WebStudio, se lo volvia a asignar.
Pero ya lo solucione. Habia un detalle que no dije porque me parecio que no tenia nada que ver, pero aparentemente esa era la clave.
El texto no provenia de una variable comun, sino de un POST.
Probando y probando, cambie el \n por \r\n y anduvo perfecto

$cadena = ereg_replace("(\r\n){3,}","\r\n\r\n",$cadena);

Aunque no entiendo muy bien porque ni que diferencia hay.
  #6 (permalink)  
Antiguo 19/11/2002, 12:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Resulta que el salto de linea no es igual en todos los sitemas operativos ...

Windows --> \r\n
Linux -------> \n
Mac ---------> \r
otros --------> \n

No se donde están esas especificaciones técnicas .. pero asi son si no me equivoco.

(fuente: ver código aplicacion phpmyadmin .. por ejemplo).

Un saludo,
  #7 (permalink)  
Antiguo 19/11/2002, 14:03
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Y hay alguna forma de preguntar que sistema es para usar uno u otro para que el codigo sirva siempre?

if is win
\r\n
else
\n

?
  #8 (permalink)  
Antiguo 19/11/2002, 14:28
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
con jscript has una funcion y guardala en una variable php
  #9 (permalink)  
Antiguo 19/11/2002, 14:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y en PHP:

Código PHP:
// Determines platform (OS), browser and version of the user
// Based on a phpBuilder article:
//   see [url]http://www.phpbuilder.net/columns/tim20000821.php[/url]
if (!defined('USR_OS')) {
    if (!empty(
$HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
        
$HTTP_USER_AGENT $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
    }
    
// 1. Platform
    
if (strstr($HTTP_USER_AGENT'Win')) {
        
define('USR_OS''Win');
    } else if (
strstr($HTTP_USER_AGENT'Mac')) {
        
define('USR_OS''Mac');
    } else if (
strstr($HTTP_USER_AGENT'Linux')) {
        
define('USR_OS''Linux');
    } else if (
strstr($HTTP_USER_AGENT'Unix')) {
        
define('USR_OS''Unix');
    } else {
        
define('USR_OS''Other');
    }
    
// 2. browser and version
    
if (ereg('MSIE ([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version)) {
        
define('USR_BROWSER_VER'$log_version[1]);
        
define('USR_BROWSER_AGENT''IE');
    } else if (
ereg('Opera(/| )([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version)) {
        
define('USR_BROWSER_VER'$log_version[2]);
        
define('USR_BROWSER_AGENT''OPERA');
    } else if (
ereg('Mozilla/([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version)) {
        
define('USR_BROWSER_VER'$log_version[1]);
        
define('USR_BROWSER_AGENT''MOZILLA');
    } else if (
ereg('Konqueror/([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version)) {
        
define('USR_BROWSER_VER'$log_version[1]);
        
define('USR_BROWSER_AGENT''KONQUEROR');
    } else {
        
define('USR_BROWSER_VER'0);
        
define('USR_BROWSER_AGENT''OTHER');
    }
}

# Determina el salto de linea para varias plataformas de SO.
function which_crlf()
    {
        
$the_crlf "\n";

        
// Win case
        
if (USR_OS == 'Win') {
            
$the_crlf "\r\n";
        }
        
// Mac case
        
else if (USR_OS == 'Mac') {
            
$the_crlf "\r";
        }
        
// Others
        
else {
            
$the_crlf "\n";
        }

        return 
$the_crlf;
    }

$crlf        which_crlf(); // ese será el salto de linea segun el sistema operativo .. 
Código extraido de phpmyadmin .. e cual a su vez es de sus respectivos autores sengun el link indicado ...

Un saludo,
  #10 (permalink)  
Antiguo 19/11/2002, 14:48
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Gracias Cluster, lo voy a acomodar a mis necesidades especificas.
  #11 (permalink)  
Antiguo 19/11/2002, 15:14
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Hay algo que no entiendo.
Cual es el SO que importa? El del server o el del usuario?
Yo intuyo que es el del server, pero no se...
Porque el script le asigna el valor al salto dependiendo del sistema del usuario que visita la pagina.

Me lo podrias explicar Cluster?
  #12 (permalink)  
Antiguo 19/11/2002, 15:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El del cliente .. q va a ser el q va a enviar esos saltos de linea al servidor en sus formularios (texarea por ejemplo) o sus sistema de ficheros de texto plano q use ...

Por eso .. esas funciones q ves ahi .. solo hacen q determinar el navegador del cliente .. y bueno, gracias a q el cliente se conecta al servidor HTTP .. PHP le puede pedir que le diga o muestre esa variable de servidor q es el "Browser" .. Lo mismo como han dicho lo podrias obtener por Javascript .. pero en este caso te verias obligado a enviarle esas variables javascripta al servidor en la proxima peticion q hagas (por ejemplo junto con algun formulario .. o link q generes para pedir una pagina al servidor)

Un saludo,
  #13 (permalink)  
Antiguo 19/11/2002, 16:16
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Aha...
OK, me voy a menejar de esa forma entonces...
Pero decime:
Yo hace un tiempito postee un mensaje sobre encabezados de email... Ahi tambien tuve problemas con estos caracteres, para separar los encabezados. Ahi tuve que optar por usar \n (Unix) para que me anduviese bien. En ese caso, habria forma de consultar el sistema del server para saber con que separar los encabezados, y que sirva en cualquier server?
  #14 (permalink)  
Antiguo 19/11/2002, 16:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm .. no se ahora si habrá alguna variable de servidor q te devuelva al sistema operativo del servidor ..

De todas formas .. revisalas:
http://us.php.net/manual/en/reserved.variables.php

hay una por ahi q se llama "SERVER_SOFTWARE" ...

Tambien puedes mirar algo sobre el protocoolo HTTP .. aquí te dejo unos ejemplitos:

http://kodesoft.host.sk/http.html

Un saludo,
  #15 (permalink)  
Antiguo 19/11/2002, 16:40
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Aparentemente podria servir, porque en mi PC contiene la palabra Microsoft y en el server Unix.
Yo creo que eso es suficiente.
Muchas gracias Cluster.
  #16 (permalink)  
Antiguo 20/11/2002, 03:20
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
existe una constante PHP_OS, yo la uso de esta manera:

Código PHP:
if (strtoupper(substr(PHP_OS03)) == 'WIN')
        
dl('php_gtk.dll');
    else
        
dl('php_gtk.so'); 
Para cargar una libreria u otro jeje dependiendo del sistema operativo :P, sino puedes hacer esto tambien:

Código PHP:

dl
(stristr(PHP_OS"WIN") ?  "php_gtk.dll" "php_gtk.so"); 
__________________
Usuario registrado de Linux #288725
  #17 (permalink)  
Antiguo 20/11/2002, 11:12
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 15 años, 6 meses
Puntos: 0
Fantastico! esta variable es aun mejor, mas precisa. Muchas gracias!
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 06:05.