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

Php 为字符串中出现的每个单词执行代码,php,string,function,foreach,explode,Php,String,Function,Foreach,Explode,我有以下字符串 HEADER*RECIPIENT MAIN *FOOTER 我想知道如何使用PHP循环遍历这个字符串,并在每次出现单词HEADER*、*FOOTER、MAIN和RECIPIENT时执行一个函数 在分解字符串后,我自己尝试了使用basic for each循环,但我发现它将所有元素组合在一起 我需要它按照找到它们的顺序。我的方法只适用于一页 如何实现这一点?这就是我在多年前开发的一个旧框架中使用的简单模板解析器 基本上,您可以向templateParser提供源模板,并在回调函

我有以下字符串

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

在分解字符串后,我自己尝试了使用basic for each循环,但我发现它将所有元素组合在一起

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


如何实现这一点?

这就是我在多年前开发的一个旧框架中使用的简单模板解析器

基本上,您可以向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.');
      }
    }
    ?>


您可以发布您尝试过的代码吗?这就是StackOverflow的工作原理。您希望执行什么代码?你想让它做什么?它会修改字符串吗?您搜索的文本是否总是相同的?第一个提示是:查看preg_replace_callback()函数。如果不想真正替换内容,而只是执行其他代码,则可以使用伪函数。$headers=explode(“HEADER*”,$theheaders);foreach($headers作为$header){theheader($form);}$recipients=explode(“RECIPIENT”,$therecipients);foreach($recipients as$recipient){recipient($form,$custitle,$custfname,$custsname,$address1,$address2,$address3,$address4,$postcode,$custno);}$mains=explode(“MAIN”,$themains);foreach($mains as$main){main($form,$custtitle,$custsname,$accidendate,$username);}$footers=explode(“*FOOTER”,$thefooters);foreach($footers作为$footer){thefooter($form,$custno);}很抱歉搞砸了!不知道如何在此处正确回复我很抱歉,我尝试使用regex/(\bHEADER\b)/I使其正常工作,但我只收到以下错误。。。PHP警告:函数#exists()要求参数1为字符串,数组给定PHP致命错误:未捕获异常“exception”,消息为“找不到令牌处理程序”。nStack跟踪:\n#0[内部函数]:模板#回调(数组)\n#1 preg#u replace#回调('/(\\bHEADER\\b)/','template#u callba…,'HEADERRECIPIEN…)\n#2 templateParser('HEADERRECIPIEN…')\n#3{main}\n抛出不确定为什么会出现错误,也不确定正则表达式是否正确模板回调函数在我摆脱第一个if条件后可以完美工作,因为我的函数被称为header而不是header,但这正是我需要的,谢谢@brazorf:)