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

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:

а также интересует есть ли функция какая-то которая убирает пустые елементы массива?
 

bkonst

.. хочется странного?...
Я понимаю, что читать документацию не модно, но...
preg_match_all

-~{}~ 29.12.06 12:00:

... прочел код.... сдурнило в угол
 

zip111

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

Андрейка

Senior pomidor developer
zip111
другой вариант - дальше искать нет смысла когда strpos возвращает false
 

rudserg

Guest
Три строки с адаптацией для твоего кода:

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