Código PHP:
if ($element->tag=='table'){
$element->outertext = "<div style='border:4px solid red;'>" . $element->outertext . "</div>";
}
| ||||
Respuesta: Rodear elemento con HTMLpurifier Hay el problema es la librería que estas usando.... dime cual es y tal vez, te puedo ayudar mejor. Pero si es que fuera "simplehtmldom" ... despues de esa linea, prueba volviendo a asignar el contenido... asi: $html = str_get_html($html); Suerte
__________________ Atte. MasterOjitos :ojotes: Todo sobre Programación Web Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Gracias, he probado con ello... pero no hace efecto. Es extraño que $element->innertext tenga contenido... y no lo esté la que busco. Supuestamente deben tener el mismo origen. La librería se llama HTMLPurifier. Gracias por la ayuda ;D |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Es que innerText, como bien dice es el "Texto Interno"... entonces no te dara todo como tu lo quieres... y a quien necesitas es a ourterText, que te dara todo el "Texto Externo". Si puedes, postea un poco mas de codigo... con solo esa pequeña parte no puedo ayudarte mas.
__________________ Atte. MasterOjitos :ojotes: Todo sobre Programación Web Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog |
| ||||
Respuesta: Rodear elemento con HTMLpurifier mmm.. sí, cierto. El problema que tengo es que $element->outertext me aparece como cadena vacía, cuando debería contener todo el elemento. Esta es la función a la que llama el callback: Código PHP: |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Te pedí un poco mas de código, pero vamos... "me diste mucho código" :S Muestrame el código donde llamas a esa función... es decir, quiero ver cuando creas la variable $element.
__________________ Atte. MasterOjitos :ojotes: Todo sobre Programación Web Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog |
| ||||
Respuesta: Rodear elemento con HTMLpurifier jejeje, también es cierto. Bueno, dejaré un bloque completo eliminando las zonas que son prescindibles: Código PHP: |
| ||||
Respuesta: Rodear elemento con HTMLpurifier No se si sera tarde... si ya lo resolviste.... pero bueno, aquí mi respuesta: Donde esta declarada la variable $cont_data['cont'] ?? Nunca he usado set_callback ... que es lo que pretendes con esto ?? Tu código la verdad es bien complicado.... no se que es lo que realmente quieres....
__________________ Atte. MasterOjitos :ojotes: Todo sobre Programación Web Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog |
| ||||
Respuesta: Rodear elemento con HTMLpurifier jejeje... en realidad todo el proceso es el siguiente: Los usuarios crean contenidos con un editor WYSIWYG (concretamente tinyMce) Ahora... siempre, al mostrar ese contenido, justo antes de mostrarlo, se procesa el HTML de los mismos, para: Reemplazar BBCODE Reemplazar vídeos (ya sea youtube u otros servicios) Reemplazar imágenes: En este caso necesito set_callback para chequear uno a uno si el src de la imagen pertenece a una imagen alojada en MI servidor, y en caso positivo, ver si está bloqueada o no por posibles reclamaciones. Si existe, se muestra la imagen, rodeada de un div, para mostrarla a mi gusto.Reemplazar tablas: Necesito insertar cada tabla en un div que lo rodee, para poder mostrarlo a mi gusto (centrado, con su fondo de relleno, etc...) de modo que quede en armonía con las imágenes.Espero que esto sirva... si hay algún otro modo de hacer el caso de las tablas agradecería me lo comenten. El caso de las imágenes es inevitable puesto que necesito hacer los mencionados chequeos. |
| ||||
Respuesta: Rodear elemento con HTMLpurifier No me contestaste donde declaras o donde se encuentra el valor de $cont_data['cont']. Y en mi caso, yo no usaria ese set_callback, sino que recorreria todos los tags y ahi uno por uno pregunto por tu tipo y todo lo demas como lo vienes haciendo. Suerte
__________________ Atte. MasterOjitos :ojotes: Todo sobre Programación Web Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Bueno, $cont_data es una matriz que contiene el resultado del contenido del artículo (HTML) a mostrar. Está definida antes de esas líneas, justamente... y... he comprobado que contiene HTML... es más, el contenido se muestra correctamente, a excepción de las tablas, que las elimina por completo. ¿Cómo hago esa segunda opción, sin usar set_callback? |
| ||||
Respuesta: Rodear elemento con HTMLpurifier
Código PHP:
Ver original Haz un var_dump($element); antes y después de modificar el outertext... Obtienes lo que esperas? Hay diferencias entre ambas salidas? Hay errores? Cita: Está claro que no sabes para qué sirve o cómo funciona, entonces porqué recomiendas que no lo use? |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Gracias por la ayuda. He hecho la prueba, y tras mostrarme miles de líneas del tipo: Cita: No encuentro diferencias entre una y la siguiente. Aún así, ¿existe un método menos complejo para envolver tablas en un div? Lo digo porque, ¿para qué quiero que el sistema me recoja todos los subelementos de la tabla, si no voy a trabar con ellos...? object(simple_html_dom_node)#22 (9) { ["nodetype"]=> int(1) ["tag"]=> string(5) "table" ["attr"]=> array(0) { } ["children"]=> array(1) { [0]=> object(simple_html_dom_node)#23 (9) { ["nodetype"]=> int(1) ["tag"]=> string(5) "tbody" ["attr"]=> array(0) { } ["children"]=> array(22) { [0]=> object(simple_html_dom_node)#24 (9) { ["nodetype"]=> int(1) ["tag"]=> string(2) "tr" ["attr"]=> array(0) { } ["children"]=> array(5) { [0]=> object(simple_html_dom_node)#25 (9) { ["nodetype"]=> int(1) ["tag"]=> string(2) "th" ["attr"]=> array(0) { } ["children"]=> array(0) { } ["nodes"]=> array(1) { [0]=> object(simple_html_dom_node)#26 (9) { ["nodetype"]=> int(3) ["tag"]=> string(4) "text" ["attr"]=> array(0) { } ["children"]=> array(0) { } ["nodes"]=> array(0) { } ["parent"]=> *RECURSION* ["_"]=> array(1) { [4]=> string(5) "Letra" } ["tag_start"]=> int(0) ["dom:private"]=> object(simple_html_dom)#1 (21) { ["root"]=> object(simple_html_dom_node)#2 (9) { ["nodetype"]=> int(5) ["tag"]=> string(4) "root" ["attr"]=> array(0) { } ["children"]=> array(4) { [0]=> object(simple_html_dom_node)#3 (9) { ["nodetype"]=> int(1) ["tag"]=> string(1) "p" ["attr"]=> array(0) { } ["children"]=> array(3) { [0]=> object(simple_html_dom_node)#4 (9) { ["nodetype"]=> int(1) ["tag"]=> string(4) "span" ["attr"]=> array(1) { ["style"]=> string(14) "color:#339966;" } ["children"]=> array(0) { } ["nodes"]=> array(1) { [0]=> object(simple_html_dom_node)#5 (9) { ["nodetype"]=> int(3) ["tag"]=> string(4) "text" ["attr"]=> array(0) { } ["children"]=> array(0) { } |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Bueno, el objeto no tiene una propiedad outertext, entonces, no puedes modificarla. Un método menos complejo podría ser str_replace, algo como:
Código PHP:
Ver original Seguramente no es tan efectivo como manipular directamente el DOM, pero puede servir. |
| ||||
Respuesta: Rodear elemento con HTMLpurifier Gracias por la rápida solución. Pero, pienso que si en algún momento se hace necesario tratar el DOM de manera más profunda, es mejor hacer las cosas desde el principio. ¿Conoce alguien alguna librería con la que trabajar el DOM que me ofrezca manipular con facilidad este tipo de aspectos? Un saludo. |
Etiquetas: |