Quitar cierta parte de texto o la etiqueta que desee

WWWW Seguir

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.258
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
 

sandercrow

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
22 Ene 2013
Mensajes
32
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.
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
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:
 

luishdez

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Jun 2014
Mensajes
32
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 edición:

hugo1

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
28 Dic 2012
Mensajes
90
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);
}
 

sandercrow

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
22 Ene 2013
Mensajes
32
Sin duda, nada como las librerías predefinidas. Esta me la apunto. Muy buena.
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.258
[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:
 

cantasken

VIP
Delta
Programador
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Suscripción a IA
Desde
27 Feb 2014
Mensajes
708
Te recomendaría uses javascript :)
 
Arriba