Hice una clase que te puede ayudar.
La base es preg_match_all y son expresiones regulares así que podrás ampliarla.
Código PHP:
Ver original<?php
class Preg
{
/**
* Texto de Apertura de la expresion regular.
* @var string
*/
private $_txtApertura = '<!-- INICIO -->';
/**
* Texto de Cierre de la Expresion regular.
* @var string
*/
private $_txtCierre = '<!-- FIN -->';
/**
* Expresion regular basica.
* @var string
*/
private $_expresionRegular = '|%s(.*?)%s|s'; //'/<tag[^>]*>(.*?)<\/tag>/';
/**
* Texto a ser Evaluado por la expresion regular.
* @var string
*/
private $_texto = '';
/**
* Contiene el Total de Coicncidencias.
* @var integer
*/
private $_cantCoincidencias = 0;
/**
* Contiene las coincidencias.
* @var array
*/
private $_coincidencias = array();
/**
* Constructor de clase.
* @param string $texto Texto que se quiere evaluar por la expresion regular.
* @return void
*/
public function __construct($texto = null)
{
$this->_texto
= (isset($texto))?
$texto : ''; }
/**
* Configura el texto de apertura de la Expresion Regular.
* @param string $txt
*/
public function setApertura($txt)
{
$this->_txtApertura
= (isset($txt))?
$txt : '<!-- INICIO -->' ; }
/**
* Configura el texto de Cierre de la Expresion Regular.
* @param string $txt
*/
public function setCierre($txt)
{
$this->_txtCierre
= (isset($txt))?
$txt : '<!-- FIN -->' ; }
/**
* Retorna la expresion regular que se utilizara.
* Meramente informativa.
* @return string
*/
public function getExpresionRegular()
{
return sprintf($this->_expresionRegular
, $this->_txtApertura
, $this->_txtCierre
); }
/**
* Texto sobre el cual se aplicara el analisis.
* @param string $texto Texto a analizar.
* @param boolean $agregar False remueve el viejo texto y solo permanecera el nuevo.
* True agrega el texto al final del anterior.
*/
public function setTexto($texto, $agregar= false)
{
if ($agregar) {
$this->_texto = $this->_texto . $texto ;
} else {
$this->_texto = $texto;
}
}
/**
* Extrae todas las coincidencias del texto correspondiente.
* @return integer Cantidad de coincidencias.
*/
public function extraerBloques()
{
$this->_cantCoincidencias
= preg_match_all($this->getExpresionRegular(), $this->_texto
, $this->_coincidencias
, PREG_PATTERN_ORDER
); if ($this->_cantCoincidencias) {
$this->_coincidencias = $this->_coincidencias[1];
} else {
$this->_coincidencias
= array(); }
return $this->_cantCoincidencias;
}
/**
* Retorna un arreglo con todas las coincidencias.
* @return array
*/
public function getCoincidencias()
{
return $this->_coincidencias;
}
}
// Aqui instanciamos la clase y si queremos podemos en este momento darle la frase de busqueda.
// o tambien podemos ponerla mas tarde con setTexto
$a = new Preg('//contenido
texto
texto
//finContenido');
// Definimos el bloque que dará apertura a la búsqueda
$a->setApertura('//contenido');
// Definimos el bloque que dará cierre a la búsqueda
$a->setCierre('//finContenido');
// Si da algun resultado muestra los mismos si no
// nos pone que no hay coincidencias.
if($a->extraerBloques()) {
} else {
echo 'Sin coincidencias';
}
Recuerda inlcuir la clase en tu codigo.
Saludos