Necesito limpiar HTML de caracteres especiales ' ', pero quiero que permanezcan las estructuras '<p> </p>'. He confeccionado esta expresión:
Código PHP:
'/[^(<p>)] [^(<\/p>)]/'
¿Qué expresión es la que estoy buscando?
| |||
Ayuda con una expresión regular sencilla Aquí novateando con las expresiones regulares... Necesito limpiar HTML de caracteres especiales ' ', pero quiero que permanezcan las estructuras '<p> </p>'. He confeccionado esta expresión: Código PHP: ¿Qué expresión es la que estoy buscando? |
| ||||
Respuesta: Ayuda con una expresión regular sencilla creo que estas confundido.... los [] solo sirven para agrupar conjuntos de caracteres, no frases completas... para negar frases completas a la izquierda debes usar (?<!), y a la derecha (?!) te invito a leer lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/ una última cosa... <p> </p> no es nada correcto, y suponiendo que solo esperas generar un salto de linea con ello bien puedes usar <br />
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| ||||
Respuesta: Ayuda con una expresión regular sencilla ¿Algo así?
Código PHP:
Ver original Edito: Estoy de acuerdo con pateke que no es nada correcto el uso de <p> </p>, sino usar lo que corresponde, semánticamente hablando.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
Respuesta: Ayuda con una expresión regular sencilla Completamente de acuerdo con pateketrueke, estas siendo poco ortodoxo... y estas usando mal la expresion regular.....no hay na mas que decir ...buen trabajo pateketrueke. |
| |||
Respuesta: Ayuda con una expresión regular sencilla @abimaelrc: No, si te fijas bien tu expresión borra las dos formas, que es lo que no quiero. Gracias de todos modos. @pateketrueke Gran pequeño tutorial de expresiones regulares has hecho. Ni sabía que existían esos Modificadores de Sub patron y captura. Usándolos me he acercado mucho a la meta pero no, al final es mucho más sencillo hacer lo que quiero con una función, aunque esto me ha ayudado a estudiar las expresiones regulares, que es siempre lo que voy dejando en php para el final. Gracias. Con respecto a la ortodoxia, tengo que decir que los '<p> </p>' los mete el tinyMCE por defecto que es con el que proceso decenas de megas de texto en mi web. Mecanizar el cambio de esa expresión por '<br />' no tiene sentido, ya que: 1) el <br /> en sí mismo es una marcación bastante retrógrada y casi obsoleta 2) el manejo del <br /> como espaciador por los diferentes navegadores es muy disparejo Lo único sensato sería mecanizar el cambio por declaraciones css, lo único realmente ortodoxo y coherente. Mi web valida XHTML 1.0 Strict casi de cabo a rabo así que todas estas pijerías las tengo muy en cuenta. Pero a veces la rapidez y la efectividad priman... |
| ||||
Respuesta: Ayuda con una expresión regular sencilla Cita: estas pero si muy equivocado... <br /> no es ni retrograda, ni obsoleto... además todos lo navegadores lo manejan igual: es un salto de linea!!
Iniciado por vega22 Con respecto a la ortodoxia, tengo que decir que los '<p> </p>' los mete el tinyMCE por defecto que es con el que proceso decenas de megas de texto en mi web. Mecanizar el cambio de esa expresión por '<br />' no tiene sentido, ya que: 1) el <br /> en sí mismo es una marcación bastante retrógrada y casi obsoleta 2) el manejo del <br /> como espaciador por los diferentes navegadores es muy disparejo Lo único sensato sería mecanizar el cambio por declaraciones css, lo único realmente ortodoxo y coherente. Mi web valida XHTML 1.0 Strict casi de cabo a rabo así que todas estas pijerías las tengo muy en cuenta. Pero a veces la rapidez y la efectividad priman... te invito a que mires las especificaciones desde HTML4, xHTML1 y HTML5 todas estas especificaciones lo contemplan con el salto de linea regular, y natural del mismo marcaje.... ¿de donde has sacado tremenda gilipollez? y con respecto a TinyMCE te puedo asegurar que se puede configurar para que en lugar de párrafos vacíos te inserte saltos de linea... ¿si entiendes la diferencia entre un párrafo vacío y un salto de linea verdad?
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| |||
Respuesta: Ayuda con una expresión regular sencilla Desde que tengo memoria y desde que iniciaba usaba para salto de Linea el <br> y nunca me ha puesto problemas en ningún navegador...todos lo manejan igual...=)......y ps..aun lo sigo usando sin ningun problema de interpretacion en los navegadores XD |
| |||
Respuesta: Ayuda con una expresión regular sencilla Si sois capaces de decir la tremenda barbaridad de que navegadores como IE6/7 e IE8/FF/Chrome etc. manejan igual el tag <br /> está claro cuánto sabéis de maquetación web y lo finos que os deben salir los trabajos XD. Como todo el mundo sabe, hasta el más pardillo, cada navegador maneja a su forma también los <p> y los <hx>, y las diferencias en el <br /> usado como espaciador o multiespaciador son bastante más radicales. TinyMCE es el primero en desaconsejar el uso de <br /> para otra cosa que no sea para lo que está: dar un salto de línea. Y por supuesto que desde que tenemos memoria lo usamos... Por eso posiblemente en xhtml2 desaparezca, porque es más viejo que Matusalén. Cita: Está probada incluso. Borra todo, ya que captura el patrón antes de | y el patrón después de |. La solución va por los subpatrones, pero aunque he logrado que me respete el patrón espaciador y me borre todos los nbsp sueltos, me deja los que van seguidos de </p> y los que van precedidos de <p>. De todos modos ya digo que con una sencilla función con str_replace el tema queda zanjado, aunque no de un modo tan elegante, claro. Te equivocas. Tratala antes de analizarla. Última edición por vega22; 02/09/2010 a las 11:54 |
| |||
Respuesta: Ayuda con una expresión regular sencilla Mmmm...ps haber te digo mis aplicaciones....que son bastantes y van desde sencillas hasta complejas, desde viejitas a recientes ....con respecto al <br /> no he tenido problemas...en ningun navegador.......ps si quieres muestrame un codigo de los que manejas donde la interpretación del <br /> por los navegadores sea dispareja... fresh.... |
| ||||
Respuesta: Ayuda con una expresión regular sencilla No puede borrar los que están en <p> </p> porque yo le indico que esos los añada. Si te fijas hay, en el segundo parametro $1. Si copias y pegas fielmente ese código verás que no se borra.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| ||||
Respuesta: Ayuda con una expresión regular sencilla Cita: te invito a demostrar con hechos lo que planteas... además de que no existe ningún tag <hx/>
Iniciado por vega22 Si sois capaces de decir la tremenda barbaridad de que navegadores como IE6/7 e IE8/FF/Chrome etc. manejan igual el tag <br /> está claro cuánto sabéis de maquetación web y lo finos que os deben salir los trabajos XD. Como todo el mundo sabe, hasta el más pardillo, cada navegador maneja a su forma también los <p> y los <hx>, y las diferencias en el <br /> usado como espaciador o multiespaciador son bastante más radicales. y de verdad, quiero que lo sustentes.... pues todos van a decir que el pardillo eres tu, los hechos hablan!!!
__________________ Y U NO RTFM? щ(ºдºщ) No atiendo por MP nada que no sea personal. |
| ||||
Respuesta: Ayuda con una expresión regular sencilla Quizá un poco offtopic del tema de la expresión regular. Un <br /> es claramente un salto de linea, a diferencia de un salto de párrafo, por lo que es un elemento necesario digamos en la escritura de un poema o una canción. No veo por qué tenga que desaparecer. Supongo que el salto de linea dentro de un párrafo de texto se debe tratar exactamente como eso, una linea vacía del mismo alto que una linea de texto llena, en el caso de haber 2 <br /> consecutivos. En el caso de un solo <br /> debe simplemente enviar el siguiente caracter a la linea siguiente. Si un <br /> reacciona diferente es probablemente por la estructura padre que lo contiene, ya que debe de heredar ciertos atributos de estilo como el line-height, o sus variantes de font-size. Soy un poco ignorante del tema en realidad. Última edición por Rafael; 02/09/2010 a las 13:33 |
| |||
Respuesta: Ayuda con una expresión regular sencilla Cita: En mi opinión el ñomo tiene razón, cada navegador trabajas los elementos html según sus propias especificaciones, claro esta que desde el invaluable arachne hasta estos días las diferencias no son tan grotezcas pero existen.Más que de navegador debería haber diferenciado en engine, pero el razonamiento es bueno. La etiqueta <hx> se refiere a h1, h2, etc... Igualmente ambas preguntas muchachos y ambas respuestas son capciosas, porque uno se refiere a la función visual que presta la etiqueta al renderizarse y el otro habla de como queda en función de tamaños... estamos grande para discuciones de nenes. PD: q fucking es pardillo? |
| |||
Respuesta: Ayuda con una expresión regular sencilla ps por eso compañero demuestrame que el <br /> tiene un funcinamiento diferente en todos los navegadores.... escriban un <html> con alfredo <br /> Ernesto <br /> y ejecutenlo en los navegadores y me dicen =) |
| |||
Respuesta: Ayuda con una expresión regular sencilla Cita: Es verdad, yo cambié las variables para adaptarlas a mi script por eso no iba. Bien, ese es el modo en que lo he resuelto yo (añadiendo las cadenas válidas que antes ha borrado), pero usando una línea más y str_replace. Creo que tu fórmula es la mejor de todas las que se pueden emplear. Es posible que no exista expresión regular ninguna que haga lo que quiero sin tener que reañadir lo antes eliminado. Tema <br /> cuidadosamente explicao para el insistente naciostars : Obviamente nadie usa en un texto un párrafo vacío como salto de línea. Un <p></p> se usa como espaciador entre párrafos que trata de mantener las proporciones en el flujo del texto. Si usas <br /> como salto de línea, para lo que está hecho, su comportamiento será similar en todos los navegadores, aunque habrá variaciones menores debidas al distinto manejo de las proporciones del texto en cada uno de ellos. Yo uso constantemente <br /> como salto de línea. Semánticamente es para lo que está hecho, y nada más. Pero úsalo como espaciador, por ejemplo: Esteban<br /> <-salto de línea <br /> <-espaciador Julián y ya verás el espacio tan diferente que hay entre ambos nombres entre los antiguos IE y los nuevos nanegadores. Así de simple. Si en vez de un <br /> usas dos o más, las diferencias se hacen cada vez más patentes. Usar <br /> para espaciar texto es pésimo en la práctica y en la teoría patea toda la coherencia semántica. Por otro lado, mirad en esta página el debate abierto sobre extirpar el <br /> o no como salto de línea en xhtml2: http://www.w3.org/TR/xhtml2/mod-text.html (sección 9.15) Pero espaciar, hay que espaciar. Lo cual puede convertirse en algo muy complejo, sobre todo si queremos que las cosas queden como esperamos en los IE6/7, que tienen severos problemas con el flujo del texto. ¿Qué uso? principalmente estilos, como debe ser. Margin-tops por aquí, margin-bottoms por allá. Es muy engorroso y trabajoso, pero se hace. ¿Qué pasa si tengo prisa? Que dejo que el TinyMCE meta algún que otro párrafo vacío como espaciador en el flujo de texto. ¿Por qué no lo hago más, cuando es un método bastante práctico que da muy buenos resultados? Porque escucho demasiado a los ortodoxos. Pero, en realidad, si lo pensamos bien, semánticamente es correctísimo usar un párrafo vacío <p></p> si quieres que haya un espacio doble entre dos párrafos que conserve la proporción del flujo de texto. Lo ideal es separar párrafos con distancias iguales a la altura de un párrafo, y para ello lo super lógico es usar un párrafo. Vacío, claro. Así de simple. Introducir el dichoso en medio se hace para los IE, que si no, consideran que <p></p> es igual a nada. Con esto espero dejar zanjada de una vez esta discusión paralela de críos sobre si hacemos los deberes de la escuela como dice el maestro o no. Aquí estábamos para las expresiones regulares y no para complicarnos más la vida unos a otros. |
| |||
Respuesta: Ayuda con una expresión regular sencilla @naciostars: Pelillos a la mar. No pasa nada. Espero al menos haber dejado claro qué es lo que estoy haciendo y por qué. Luego cada maestrillo (aprendicillo en mi caso) que siga su librillo... Al final no voy a poder usar ninguna fórmula para purgar los nbsp porque he recordado que muy de tarde en tarde los uso para lo que están: para crear frases irrompibles. Cuando vuelva a usar una, que será seguramente en meses, no me voy a acordar del script y me la va a desarmar sin darme yo cuenta. Crear una expresión regular que respete las aleatorias frases irrompibles sí que me parece algo de verdad imposible de conseguir... |
Etiquetas: |