Функция выбора значений из строки

  • Автор темы Автор темы zip111
  • Дата начала Дата начала

zip111

Новичок
Функция выбора значений из строки

Необходимо было написать функцию такого себе парсера который выбирает из строки все значения которые лежат между {:: и ::}. Реализовал это так.

PHP:
       $datas = array();
       for ($i = 0; $i < strlen($this -> template); $i++) {
         if ($i == 0) {
            $start = substr($this -> template, strpos($this -> template, '{::')+3);
         } else {
         	$start = substr($start, strpos($start, '{::')+3);
         }
         $continue = substr($start, 0, strpos($start, '::}'));
         $datas[$i] = $continue;
         unset($continue);
         echo $datas[$i].'<br>';
      }

В принципе метод устраивает, однако если приходится обрабатывать большую строку, начинает тормозить. Может есть какие-либо альтернативы либо уже готовые решения?

-~{}~ 29.12.06 11:37:

а также интересует есть ли функция какая-то которая убирает пустые елементы массива?
 
Я понимаю, что читать документацию не модно, но...
preg_match_all

-~{}~ 29.12.06 12:00:

... прочел код.... сдурнило в угол
 
запускал. он прогоняет столько раз, сколько символов в строке. Другого варианта не знаю\не нашел.
 
Три строки с адаптацией для твоего кода:

PHP:
$datas = array();
if (preg_match_all("/{::(.*?)::}/", $this -> template, $aMatches))
{
    $datas = $aMatches[1];
}
echo join('<br />', $datas);
 
Сверху