Bueno por si alguien en un futuro le hace falta, la solución que he visto mas viable es la siguiente:
Cuento con substr_count el numero de etiquetas <p> que hay y se las resto contando con substr_count al total de etiquetas </p> que hay.
En caso de que el primero sea mayor que el segundo, incluyo al final del string los cierres necesarios.
Código PHP:
Ver original$texto="<p> Hola</p> <p> Adios"; //hay dos aberturas y un solo cierre por lo que descuadraría el texto
if($topen >$tclose )
{
$resta=$topen -$tclose ;
$i=0;
while($i<$resta)
{
$texto= $texto. "</p>";
$i++;
}//fin while
}
No es muy ortodoxo pero da el apaño. Doy el tema por solucionado