【问题标题】:Explode list separated by tags以标签分隔的分解列表
【发布时间】:2012-07-25 14:55:09
【问题描述】:

我有一个这样分开的列表:

<!--start-->
item 1
<!--end-->
<!--start-->
item 2
<!--end-->

我需要创建一个数组,第一个变量是第 1 项,第二个是第 2 项,依此类推...

我该怎么做?

【问题讨论】:

    标签: php list explode


    【解决方案1】:

    假设列表在$input:

    // remove the start tag and add a newline at the end
    $input = str_replace("<!--start-->\n", "", $input . "\n");
    
    // break the list into an array (the last item will be an empty string)
    $output = explode("\n<!--end-->\n", $input);
    
    // remove the empty item at the end
    unset($output[count($output) - 1]);
    

    【讨论】:

      【解决方案2】:

      我的提议:

      $str = "<!--start-->
      item 1
      <!--end-->
      <!--start-->
      item 2
      <!--end-->";
      
      $in = explode(PHP_EOL, $str);
      
      function filter($ell) {
          if (strpos($ell, '<!--') !== 0){
              return true;
          }
          return false;
      }
      
      $arr = array_filter($in, 'filter');
      
      var_dump($arr);
      

      【讨论】:

        【解决方案3】:

        看一下 preg_split() 函数。

        【讨论】:

        • @Karoly Horvath 为什么?该站点旨在提供有关如何找到解决方案的帮助。这不是让别人做作业。
        • @KarolyHorvath 我完全同意 arkascha 的观点,对于那些事先显然没有对该主题进行过多研究的人来说,这是一个很好的起点。它是一个完全有效的答案,它实际上会让 OP 学习而不是按照这里的许多答案复制/粘贴。
        • @Jon Taylor:这叫做提示。关于你理想主义的教2鱼观点:这个答案可能只是让他感到困惑,他什么都没学到。
        • @KarolyHorvath 真是一派胡言。为什么要告诉他从哪里开始寻找让他感到困惑?我很清楚,当我教学生时,他们更感激给他们正确方向的提示,而不是完整的答案,通常是为那些对该主题感兴趣的人提供的,但老实说,我对试图向不愿意自己投入一点工作的人解释任何事情。
        • 随时询问 OP。另外,请查看@David 答案的最后一条评论。
        【解决方案4】:
        $string = .... <your data>
        $array = explode('<!--start-->\n', $string);
        $final = array();
        foreach ($array as $line) {
           $final[] = str_replace('<!--end-->\n', '', $line);
        }
        echo "<pre>";
        print_r($final);
        

        这将为您提供所需的内容。

        【讨论】:

        • 谢谢!如果列表之前有内容,它将在数组中排在第一位,我该如何摆脱它?
        • 什么是'echo "
          ";'有吗?
        • 您可以搜索第一次出现的&lt;!--start--&gt;,然后从那里开始。
        • &lt;pre&gt; 只是在 print_r() 输出数组时格式化数组。纯视觉。
        • @David 关于在浏览器中呈现输出的内容?而且,除此之外,这是无效的 html :-)
        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 2020-05-28
        • 2017-11-23
        • 2016-09-20
        • 2020-04-21
        • 2016-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多