Foros del Web » Programando para Internet » PHP »

Funcion para identificar estilos y URLs en un texto

Estas en el tema de Funcion para identificar estilos y URLs en un texto en el foro de PHP en Foros del Web. Buenos dias Quiero escribir dos funciones basadas en un mismo concepto... NOTA: OMITIR EL CARACTER "*" (ASTERISCO). Una seria, al encontrar "[*B]" en el texto, ...
  #1 (permalink)  
Antiguo 01/11/2005, 13:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Funcion para identificar estilos y URLs en un texto

Buenos dias

Quiero escribir dos funciones basadas en un mismo concepto...

NOTA: OMITIR EL CARACTER "*" (ASTERISCO).

Una seria, al encontrar "[*B]" en el texto, que lo cambie por un "<b>", y luego lo mismo para cerrarlo, al encontrar "[*/b]", lo cambiaria por un "</b>".
Dejando asi el texto encerrado en [*b]negrita[*/b], como lo hace el foro :)

Y luego utilizar este codigo para las url... cuando encuentra un "ESPACIO, HTTP://blabla, ESPACIO", que lo convierta en un: "<a href='TEXTO SIN LOS ESPACIOS'>TEXTO</a>".

¿Hay alguna forma simple para ahcer esto? ¿Existe alguna funcion como "STRREPLACE" que me reemplace caracteres?

Esto es lo que tengo al momento y funciona:

Código PHP:

$texto 
"El perro loco se volvio [*B]loco[*/b] se comio un choripan.";

$cont 0;

while (
$i <= strlen($texto) ) {

    if (
$texto[$i] == "[") {
        
$i++;
        if (
$texto[$i] == "b" || $texto[$i] == "B"){
            
$i++;
            if (
$texto[$i] == "]") {
                echo 
"Encontre el [b] !";
            }
        }
    }        
    
$i++;
}

echo 
$texto
CUESTIONES:

1. Si no existe una funcion que reemplace, tengo que usar substr y cortar todo... posible pero mas arduo.

2. No puedo dejar de usar el while con el anidado de if's, ya que tendria que saber CUANDO aparece un [*b], para saber que si termina el WHILE y no aparecio [*/B], lo deberia forzar.


GRACIAS POR SUS COMENTARIOS !

Saludos.
  #2 (permalink)  
Antiguo 01/11/2005, 16:48
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola,
me parece que lo mejor seria utilizar expresiones regulares para eso, te pongo un ejemplo:

Código PHP:
$texto "El perro loco se volvio [*b]loco[*/b] se comio un choripan.";
$texto ereg_replace('(\\[b\\])(.+)(\\[/b\\])''<b>\\2</b>'$texto);
echo 
$texto;       // imprime El perro loco se volvio <b>loco</b> se comio un choripan. 
Logico, no tener en cuenta los [*]

Saludos...
  #3 (permalink)  
Antiguo 01/11/2005, 17:05
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Ah me olvidaba, para el ejemplo de las url's podrias hacer algo parecido a esto:

Código PHP:
$texto "jfgjgdj dhg jdsg dshgdg http://www.google.com dhfjfhsdhgjhdkhg kdh";
$texto ereg_replace('((http://)([^\\s])+)''<a href="\\1">\\1</a>'$texto);

echo 
$texto
No es para tomar literalmente el ejemplo, se lo puede mejorar muchisimo, esto es para salir del paso, pero como para tomar una idea que es lo que se puede hacer con las expresiones.

Saludos...
  #4 (permalink)  
Antiguo 04/11/2005, 11:07
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Buenisimo Tx, muchas gracias!

El de las BOLD lo termine haciendo con str_replace, pero no es definitivo. Voy a investigar bien el como hacerlo con expresiones regulares.

Me ha sido de mucha ayuda tu aporte, gracias nuevamente!
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 02:00.