Remover certa parte de texto ou a etiqueta que desejar

  • Autor Autor WWWW
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
WWWW

WWWW

Pi
Verificación en dos pasos activada
buena la cuestión es que tengo un texto el cual es parecido a este:
<di>>
<h2>titulo</h2>
<p>elblabla1</p>
<p>eñblabla2</p>
<p>peblabla3</p>
<p>tulabla4</p>
</div>


Entonces quisiera borrar el <p></p> numero 4 o el 3, con su texto completamente.
y que me devuelva lo mismo pero sin el <p>tulabla4</p> o <p>peblabla3</p> etc.

alguna función algo así ("<etiqueta>","la-numero-4") -> quitar("<p>",4);

alguien que me pueda ayudar ? Saludos
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Si las etiquetas HTML no contienen atributos (style, class, id...) puede funcionarte lo siguiente:

function meSobranCosas($texto,$tag,$aparicion){
//convertimos las variables a minúscula para evitar problemas
$texto_temp= strtolower($texto);
$tag_temp= strtolower($tag);
//buscamos posicion de la n-ésima aparición del tag
$inicio= strpos($texto_temp, '<'.$tag_temp.'>',$aparicion);
//buscamos el cierre de la etiqueta en cuestión
$fin= strpos(substr($texto_temp,$inicio), '</'.$tag_temp.'>',$aparicion) + $inicio;
//devolvemos el resto del texto
$salida= substr($texto,0,$inicio).substr($texto,$fin);
return $salida;
}

Hay que tener en cuenta que el valor tag sería unicamente el texto de la etiqueta, sin los símbolos < y >. La función podría mejorarse para tener en cuenta los tags con una sola etiqueta como BR, HR o IMG.
 
PHP:
<?php
$texto = '<p>Parrafo 1.</p><a href="#">Link</a>';
echo strip_tags($texto);
echo "\n";

// Permitir<p> y <a>
echo strip_tags($texto, '<p><a>');
?>

El primer ejemplo mostraria:
HTML:
 Parrafo 1. Link
y el segundo imprimiria todos los <p> y <a> del codigo.
Podrias usar esa funcion un poco mas personalizada para lo que queres hacer :encouragement:
 
Si quieres trabajar con HTML no uses los ejemplos anteriores, ya que cualquier cambio o usos de atributos etc. fallará. No es nada recomendado. PHP ya tiene sus funciones para eso.


PHP:
<?php

$doc = new DOMDocument();

$doc->loadHTML("<div><h2>titulo</h2><p>Luis</p><p>Pablo</p><p>Pedro</p></div>", LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$paragraph = $doc->getElementsByTagName('p')->item(1);
$paragraph->parentNode->removeChild($paragraph);

echo $doc->saveHTML();

Esto borrará Pablo que está en la posición 1 con tag P
 
Última edição:
luishdez tiene razón.
Si quieres prueba con esto..

PHP:
$html = '<div>
		   <h2>titulo</h2>
			 <p>blabla1</p>
			 <p>blabla2</p>
			 <p>blabla3</p>
			 <p>blabla4</p>
		 </div>';

echo eliminarP($html, 'blabla3');

function eliminarP($html, $valor)
{
	return preg_replace('/<p>'. $valor .'<\/p>/', '', $html);
}
 
Sin duda, nada como las librerías predefinidas. Esta me la apunto. Muy buena.
 
[MENTION=110151]luishdez[/MENTION] Como no se me ocurrió antes, ya había hecho algo parecido de copiar una url externa con DOM.

Sin duda, nada como las librerías predefinidas. Esta me la apunto. Muy buena.

Pienso lo mismo ahora si me la apunto.

Gracias a todos por su ayuda y a [MENTION=110151]luishdez[/MENTION] por el dato.

Saludos.:encouragement:
 
Te recomendaría uses javascript 🙂
 
Voltar
Topo