0

私は次の文字列を持っています...

HEADER*RECIPIENT MAIN *FOOTER 

PHPを使用してこの文字列をループし、HEADER *、* FOOTER、MAIN、およびRECIPIENTという単語が出現するたびに関数を実行する方法を知りたいです。

文字列を分解した後、基本的なfor-eachループを使用してこれを自分で試しましたが、すべての要素がグループ化されていることがわかりました。

それらが見つかった順序に従うためにそれが必要です。私の方法は1ページでのみ機能します。

どうすればこれを達成できますか?

4

1 に答える 1

1

これは、私が数年前に開発した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.');
      }
    }
    ?>
于 2012-10-08T11:48:24.863 に答える