【问题标题】:PHP Parse HTML code [duplicate]PHP解析HTML代码[重复]
【发布时间】:2011-04-07 08:23:22
【问题描述】:

可能重复:
Best methods to parse HTML

我如何解析 PHP 变量中保存的 HTML 代码,如果它是这样的:

<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG!

我想只获取标题之间的文本,并且我知道使用正则表达式不是一个好主意。

【问题讨论】:

  • @everyone 关闭这个是重复的。这是不同的,因为 OP 不想要文本 T1, T2, T3,而是一个标题结束后和下一个标题开始之前的文本。例如Lorem ipsum.。所以,this 是不同的。请看一看。

标签: php html parsing


【解决方案1】:

使用 PHP Document Object Model:

<?php
   $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
   $DOM = new DOMDocument;
   $DOM->loadHTML($str);

   //get all H1
   $items = $DOM->getElementsByTagName('h1');

   //display all H1 text
   for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";
?>

这输出为:

 T1
 T2
 T3

[编辑]:OP 澄清后:

如果你想要Lorem ipsum.之类的内容,你可以直接使用这个正则表达式:

<?php
   $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
   echo preg_replace("#<h1.*?>.*?</h1>#", "", $str);
?>

这个输出:

Lorem ipsum.The quick red fox……跳过懒惰的棕色 FROG

【讨论】:

  • 谢谢,但我需要获取

    之间的文本,如:“Lorem ipsum.”、“The quick red fox...”等。所以不是之间的文本H1 标记,而是结束 标记和开始

    .

    之间的文本
  • @Francisc,我已经更新了答案。
  • 那更近了,谢谢。我会尝试更清楚:我想获取标题之间的文本,计算其长度并决定是否要隐藏其中的一部分。你的回答虽然很有帮助。但是我想做的是保留所有的文本,只是添加一点html来隐藏它的一部分。
  • 这是一个很棒的提示@shamittomar!感谢那!一个建议,也许是 foreach 而不是 for 循环会是一个小清洁器,但这确实帮助了我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2012-11-07
  • 2018-07-12
  • 1970-01-01
  • 2012-07-27
相关资源
最近更新 更多