получить строку из тэгов php

получение массива строк из исходного текста и удаление тэгов из каждого элемента массива =

function strs_btw_tags($opentag,$closetag,$str) // вытащит значения из тэгов вида (тэг1строкатэг2)  - причём первый  - открывающий тэг может быть расширен спец параметрами.
{
   $oppart = get_expand_tag_value($opentag);
   $clpart = "(".$closetag.")";
   
   //$oppart = "(\[".$tagname."\]|\[".$tagname."=\".{0,}\"\])"; // регулярное выражение для открывающего тэга
   // $clpart = "(\[\\\\".$tagname."\])"; //регулярное выражение для закрывающего тэга.
   log_light("--- str_btw_tags()-- we start searching for ".$oppart." and ".$clpart." in << ".$str.">>");
   
   $pattern = "(".$oppart.".*".$clpart.")is"; // шаблон-результат - процесс поиска не зависит от регистра и производится по всему тексту.
	if (preg_match_all($pattern,$str,$matches,PREG_PATTERN_ORDER )!= 0 ) // если не было ошибки или если встретили хотя бы одно подходящее знаение.
	 { 
    	 log_light("--- str_btw_tags()-- WE HAVE matches ! ");
		

		$arr =  free_from_tags($oppart,$clpart,$matches[0]);
	     $result= $arr;
	 }
	 else 
	 {
	 log_light("--- str_btw_tags()-- NO matches ");
	 $result= 0; // просто возвращаем исходный текст
      }
      
	  
	  return $result;
      
}

/*Функция получает регулярные выражения для  открывающего и закрывающего тэга+ массив строк 
- и удаляет тяги из каждого элемента массива*/
function free_from_tags($oppart,$clpart,$arr)
{
   $ert = $oppart."is";
  $i=0;
  foreach ($arr as $el)
  {
	 $el = preg_replace($clpart,"",$el); // сначала убраем закрывающий тэг - так как он проще как выражение
	 $el = preg_replace($ert,"",$el);
	 
	 $arr[$i]=$el;
	 log_light("free_from_tags [".$i."] = ".$el);
	 $i++;
  }
  
  log_light("ARR = ".arr_to_str($arr));
  return $arr;
}