Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Eliminar un tag HTML específico con PHP

Estas en el tema de Eliminar un tag HTML específico con PHP en el foro de PHP en Foros del Web. Hola mis amigos! Tengo la siguiente cadena: Código PHP: $string  =  " <table>     <tr>         <td> 1 </td>         <td> 2 </td>         <td> 3 </td>     </tr> </table> <table>     <tr>         <td> 4 </td>         <td> 5 </td>         <td> 6             <table> ...
  #1 (permalink)  
Antiguo 24/05/2016, 07:57
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Eliminar un tag HTML específico con PHP

Hola mis amigos!

Tengo la siguiente cadena:
Código PHP:
$string "
<table>
    <tr>
        <td> 1 </td>
        <td> 2 </td>
        <td> 3 </td>
    </tr>
</table>
<table>
    <tr>
        <td> 4 </td>
        <td> 5 </td>
        <td> 6
            <table>
                <tr>
                    <td> A </td>
                    <td> B </td>
                    <td> C </td>
                </tr>
                <tr>
                    <td> D </td>
                    <td> E </td>
                    <td> F </td>
                    <td> G </td>
                    <td> H </td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td> 7 </td>
        <td> 8 </td>
        <td> 9 </td>
    </tr>
</table>"

Quiero eliminar la celda (el tag) que contiene la letra H. ¿Cómo hago eso?

Llevo lo siguiente. Por supuesto, no funciona:
Código PHP:
$doc = new DOMDocument();
$doc->preserveWhiteSpace false;
$doc->loadHTML($string);


while(
is_object($table $doc->getElementsByTagName("tr")->item(3))) {
  foreach(
$table->childNodes as $nodename) {
    if(
$nodename->nodeName=='td') {
      foreach(
$nodename->childNodes as $subNodes) {
        if ( 
$nodename->childNodes->item(4) ) {
          
$subNodes->eliminarEsteNodo();
        }
      }
    }
  }

¿Me echan una mano con esto?

Saludos!
  #2 (permalink)  
Antiguo 24/05/2016, 08:48
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Eliminar un tag HTML específico con PHP

que tal esto?

ahora quesupongo que lo que coloca es solo un ejemplo... pero podria hacerlo asi de sencillo colocando el contenido del td dinámicamente..


Código PHP:
$html str_replace("<td> H </td>","",$html); 

Saludos
  #3 (permalink)  
Antiguo 24/05/2016, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Eliminar un tag HTML específico con PHP

Igual puedes usar strip_tags(), y pasarle una lista de tags permitidos, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 22/09/2016, 20:48
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Eliminar un tag HTML específico con PHP

Me disculpo por responder tan tarde.

Ahora ya no recuerdo en qué proyecto estaba trabajando y por lo cual abrí este post.

Si en su momento no contesté sus amables respuestas, seguro fue porque sus recomendaciones no aplicaban a lo que yo necesitaba. De cualquier forma, les agradezco.

helacer, tu respuesta es muy muy simple, pero va al grano. Pero seguro que en su momento no me funcionó tu respuesta porque el contenido del tag en cuestión era variable. Es decir, no iba a tener como contenido un mismo valor. La idea era borrar ese tag en específico, independientemente de su contenido.


pateketrueke Igual tampoco me resultaba tu sugerencia, ya que al eliminar los <td>, eliminaría todos, y yo sólo quería eliminar uno solo.

Gracias y hasta pronto!

Etiquetas: Ninguno
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 13:34.