Foros del Web » Programando para Internet » PHP »

Problema con expresión regular y función preg_replace

Estas en el tema de Problema con expresión regular y función preg_replace en el foro de PHP en Foros del Web. Hola Comunidad, después de leer mucho y aprender a usar las expresiones regulares me topé con un problema. El caso es que necesito limpiar un ...
  #1 (permalink)  
Antiguo 22/06/2011, 13:38
V-P
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema con expresión regular y función preg_replace

Hola Comunidad, después de leer mucho y aprender a usar las expresiones regulares me topé con un problema.

El caso es que necesito limpiar un código html que es este

Código HTML:
<div id="columns">
        <ul id="column3" class="column">
            <li class="widget color-orange">  
                <div class="widget-head" style="cursor: move; "><a href="#" class="collapse">COLLAPSE</a>
                    <h3>Widget title</h3>
                <a href="#" class="remove">CLOSE</a><a href="#" class="edit">EDIT</a></div><div class="edit-box" style="display:none;"><ul><li class="item"><label>Change the title?</label><input value="Widget title"></li></ul><li class="item"><label>Available colors:</label><ul class="colors"><li class="color-yellow"></li><li class="color-red"></li><li class="color-blue"></li><li class="color-white"></li><li class="color-orange"></li><li class="color-green"></li></ul></li></div>
                <div class="widget-content">
                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam magna sem, fringilla in, commodo a, rutrum ut, massa. Donec id nibh eu dui auctor tempor. Morbi laoreet eleifend dolor. Suspendisse pede odio, accumsan vitae, auctor non, suscipit at, ipsum. Cras varius sapien vel lectus.</p>
                </div>
            </li>
            <li class="widget color-white">  
                <div class="widget-head" style="cursor: move; "><a href="#" class="collapse">COLLAPSE</a>
                    <h3>Widget title</h3>
                <a href="#" class="remove">CLOSE</a><a href="#" class="edit">EDIT</a></div><div class="edit-box" style="display:none;"><ul><li class="item"><label>Change the title?</label><input value="Widget title"></li></ul><li class="item"><label>Available colors:</label><ul class="colors"><li class="color-yellow"></li><li class="color-red"></li><li class="color-blue"></li><li class="color-white"></li><li class="color-orange"></li><li class="color-green"></li></ul></li></div>
                <div class="widget-content">
                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam magna sem, fringilla in, commodo a, rutrum ut, massa. Donec id nibh eu dui auctor tempor. Morbi laoreet eleifend dolor. Suspendisse pede odio, accumsan vitae, auctor non, suscipit at, ipsum. Cras varius sapien vel lectus.</p>
                </div>
            </li><li class="widget color-yellow" style="position: static; top: auto; left: auto; clear: none; z-index: auto; opacity: 1; ">  
                <div class="widget-head" style="cursor: move; "><a href="#" class="collapse">COLLAPSE</a>
                    <h3>Widget title</h3>
                <a href="#" class="remove">CLOSE</a><a href="#" class="edit">EDIT</a></div><div class="edit-box" style="display:none;"><ul><li class="item"><label>Change the title?</label><input value="Widget title"></li></ul><li class="item"><label>Available colors:</label><ul class="colors"><li class="color-yellow"></li><li class="color-red"></li><li class="color-blue"></li><li class="color-white"></li><li class="color-orange"></li><li class="color-green"></li></ul></li></div>
                <div class="widget-content">
                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam magna sem, fringilla in, commodo a, rutrum ut, massa. Donec id nibh eu dui auctor tempor. Morbi laoreet eleifend dolor. Suspendisse pede odio, accumsan vitae, auctor non, suscipit at, ipsum. Cras varius sapien vel lectus.</p>
                </div>
            </li>
        </ul>
</div> 
La idea es limpiar del código anterior esta parte.

Código HTML:
<a href="#" class="remove">CLOSE</a><a href="#" class="edit">EDIT</a></div><div class="edit-box" style="display:none;"><ul><li class="item"><label>Change the title?</label><input value="Widget title"></li></ul><li class="item"><label>Available colors:</label><ul class="colors"><li class="color-yellow"></li><li class="color-red"></li><li class="color-blue"></li><li class="color-white"></li><li class="color-orange"></li><li class="color-green"></li></ul></li> 
Hice esta expresión regular

Código:
(<a).*?(value=\").*?(\"></li>).*?(</ul></li>)
pero cuando la uso en la función preg_replace me da el siguiente error.

Cita:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'l' in ....
y la linea donde da el error es

Código PHP:
$txt preg_replace('/(<a).*?(value=\").*?(\"></li>).*?(</ul></li>)/',' ',$texto); 
La verdad no se donde se provoca el error, lo único que se me ocurre es que hay algo mal en la expresión regular, pero la probé en varios simuladores y ninguno me dio problemas

Espero que alguien me ayude Gracias
  #2 (permalink)  
Antiguo 22/06/2011, 13:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Problema con expresión regular y función preg_replace

escapa!

o sea usa \ antes de caracteres como <, >, \, etc.

no soy muy bueno en expresiones regulares, pero cuando tengo dudas uso esto:

http://rejex.heroku.com/

usalo! te ayudará mucho, solo escribe en los 2 primeros cuadros de texto tu expresion regular y el texto:

__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 30/06/2011, 10:14
V-P
 
Fecha de Ingreso: noviembre-2008
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con expresión regular y función preg_replace

Si el problema eran los "/" gracias

Etiquetas: expresiones, preg_replace, regulares
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 17:07.