为字符串中每个单词的出现执行代码

时间:2012-10-08 11:02:58

标签: php string function foreach explode

我有以下字符串......

HEADER*RECIPIENT MAIN *FOOTER 

我想知道如何使用PHP循环遍历此字符串并在每次出现单词HEADER *,* FOOTER,MAIN和RECIPIENT时执行函数。

我在爆炸字符串后使用基本的for-each循环尝试了这个,但我发现它将所有元素组合在一起。

我需要它按照它们被找到的顺序。我的方法仅适用于一页。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这就是我在几年前开发的一个旧框架中使用preg_replace_callback做一个简单的模板解析器的方法。

基本上,您为templateParser提供源模板,并在回调函数中处理令牌实例。这是一个骨架,显然你应该自己实现它,并设计你的正则表达式来匹配像HEADER *,* FOOTER等标记。

<?php
    /**
     *  @param string $tpl
     *    The template source, as a string.
     */
    function templateParser($tpl) {
      $tokenRegex = "/your_token_regex/";
      $tpl = preg_replace_callback($tokenRegex , 'template_callback', $tpl);
      return $tpl;
    }

    function template_callback($matches) {
      $element = $matches[0];
      // Element is the matched token inside your template
      if (function_exists($element)) {
        return $element();
      } else if ($element == 'HEADER*') {
        return your_header_handler();
      } else {
        throw new Exception('Token handler not found.');
      }
    }
    ?>