duanposhi3641 2011-07-01 12:48
浏览 72
已采纳

php explode选择多选

I want divide these html as serval several part. One <h2> or <h3> with some <p> and <span> as one part. I tried explode array('<h2>','<h3>'), but it caused Warning. the explode not support multi choose.

So how to do it perfectly? Thanks.

$text=<<<EOT
<h2>title1</h2>
<p>something</p>
<span>something</span>
<h3>title2</h3>
<p>something</p>
<p>something</p>
<p>something</p>
<h2>title3</h2>
<span>something</span>
<h2>title4</h2>
<span>something</span>
<p>something</p>
<p>something</p>
EOT;

foreach ($text as $result) { 
    $arr = explode(array('<h2>','<h3>'),$result);
    reset($arr); 
    foreach($arr as $line){
        echo $line.'<hr />';
    } 
}

Warning: Invalid argument supplied for foreach() on line 23;

My expected output is:

<h2>title1</h2>
<p>something</p>
<span>something</span>
___________________________
<h3>title2</h3>
<p>something</p>
<p>something</p>
<p>something</p>
___________________________
<h2>title3</h2>
<span>something</span>
___________________________
<h2>title4</h2>
<span>something</span>
<p>something</p>
<p>something</p>
___________________________
  • 写回答

3条回答 默认 最新

  • dongya5893 2011-07-01 13:18
    关注

    You can use preg_split() to explode at different things. You can use RegEx here:

    $text = <<<EOT
    <h2>title1</h2>
    <p>something</p>
    ...
    EOT;
    
    $arr = preg_split("#(?=<h[23]>)#", $text);
    
    if(isset($arr[0]) && trim($arr[0])=='') array_shift($arr); // remove first block if empty
    
    foreach($arr as $block){
        echo $block."<hr />
    ";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题