Foros del Web » Programando para Internet » PHP »

remplazo de cadenas

Estas en el tema de remplazo de cadenas en el foro de PHP en Foros del Web. alguien me podria decir como utilizando ereg_replace o preg_replace podria lograr convertir esto [*]item 1[*]item 2[*]item 3 en <li>item 1</li> <li>item 2</li> <li>item 3</li> gracias ...
  #1 (permalink)  
Antiguo 18/12/2002, 13:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
remplazo de cadenas

alguien me podria decir como utilizando ereg_replace o preg_replace

podria lograr convertir esto
[*]item 1[*]item 2[*]item 3

en

<li>item 1</li>
<li>item 2</li>
<li>item 3</li>


gracias !!!


Pd: donde puedo leer las regex.7 donde sea facil de entender?
  #2 (permalink)  
Antiguo 18/12/2002, 14:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Quizas es mas sencillo usar explode(). Podrias hacer:
Código PHP:
$cadena="[*]item 1[*]item 2[*]item 3";
$lista=explode('[*]',$cadena);
$lista_html='';
foreach(
$lista as $elemento)
{
  
$lista_html.="<li>$elemento</li>\n";

Por supuesto, debes tener cuidado de que en lista no se cree elementos vacios (en este caso creo que $lista[0] es una cadena vacia porque $cadena empieza por el separador).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 18/12/2002, 14:43
 
Fecha de Ingreso: noviembre-2002
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
es una posible solucion pero alternativa

me parece que se podria hacer con ereg_replace o preg_replace
pero no las manejo
  #4 (permalink)  
Antiguo 18/12/2002, 15:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Conoces el termino KISS? Pues es un gran mantra. Si el codigo que te di hace lo que necesitas y es mas sencillo de entender para ti que las regexp, ¿cual es el motivo para no usarlo? Si lo que quieres es aprender las regexp o es un requisito impuesto, lo entiendo. Pero si es por usar las regexp porque son lo mas 'in' del momento, eso me parece una chorrara, con todos mis respetos.

Saludos.

PD: KISS= Keep It Simple, Stupid (Mantenlo simple, estupido).
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 18/12/2002, 15:25
 
Fecha de Ingreso: noviembre-2002
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
jajajajajajajaaj que chistoso
  #6 (permalink)  
Antiguo 18/12/2002, 16:06
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
El detalle con las expresiones regulares es que te permiten una flexibilidad enorme a la hora de buscar patrones especificos de tal forma que puede haber mas de una forma de abordar el problema con ellas, ademas de lo tipico que pueden ser mas lentas que otras soluciones pero hay ya es cuestion de cada quiien y de los detalles de problema.

A hora supongamos que item n es equivalente a tener cualquier caracater alfanumerico y especial como unica condicion entonces con preg_replace se puede solucionar sencillo (preg_replace por que me gusto de momento pero se puede usar ereg_replace)
Código PHP:
$str "[*]xxxx_yyyy 123[*]xxxx_[222] 123[*] ssss aaaaa @@@";

echo 
preg_replace("/\\[\\*\\](.+)/""<i>\\\\1</i>"$str); 
Como lo comente esta puede ser una forma igual el incio del patron puede representarse de otra forma.
  #7 (permalink)  
Antiguo 18/12/2002, 16:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
genial, muchas gracias

funciono bastante bien. ahora tengo que seguir con ese tema porque debo realizar otras sustituciones mas avanzadas y que no ocurran cuando no deben... es un poco mas complicado

si a alguien le sirve encontre este documento que tiene que ver con el tema y que sirve para interiorisarse un poco en el tema

http://www.linuxfocus.org/Castellano...article53.html


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 07:36.