Funcion extraer subcadena php
Esta función de PHP la cree hace tiempo, su finalidad es la de extraer una subcadena de una cadena o string en PHP. Además, puedes indicar la itineración para que no extraiga la primera subcadena que encuentre. Es extremadamente útil a la hora de manejar strings en HTML. Los parámetros son los siguientes:
- $cadena: la cadena que se va a evaluar
- $antes: lo que aparece antes de la subcadena que se quiere extraer
- $despues: lo que aparece después de la subcadena que se quiere extraer
- $cuenta: el número de veces que se tiene que repetir la coincidencia hasta devolver la subcadena
Ejemplo:
$cadena = "Esto es una lista..<ul><li>Hola mundo</li> <li>Hola mundo2</li></ul>"; echo "Primera subcadena: " .extraer($cadena,"<li>","</li>",1). "<br />"; echo "Segunda subcadena: " .extraer($cadena,"<li>","</li>",2);
Y aquí esta la función deseada:
function extraer($cadena,$antes,$despues,$cuenta) { /*Función para obtener extraer una subcadena Creado por johandebruin.com el 29-12-2009*/ if(!$cuenta) return false; //Ponemos en minuscula todo para optimizar el algoritmo; $cadena = strtolower($cadena); $antes = strtolower($antes); $despues = strtolower($despues); $localizacion1 = $localizacion2 = 0; do { $localizacion1 = strpos($cadena,$antes,$localizacion1 + 1); if($localizacion1 == false) return false; $cuenta--; } while ($cuenta > 0); $localizacion2 = strpos($cadena, $despues, $localizacion1 + 1); if ($localizacion2 == false) return false; $localizacion1 += strlen($antes); return substr($cadena,$localizacion1,$localizacion2 - $localizacion1); }