标签之间的回声内容?

时间:2012-05-13 03:30:26

标签: php

是否可以仅使用PHP

来获取然后回显标签之间的内容

例如。如果这是以下HTML

<td class="header subject">Text</td>

如何从代码中获取Text,然后echo呢?

我认为这样可行:

<? 
preg_match("'<td class=\"header subject\">(.*?)</td>'si", $source, $match);
if($match) echo "result=".$match[1];
?>

$source变量必须是整个页面。

注意:header subject类只有一个实例,因此多个标签应该没有问题。

2 个答案:

答案 0 :(得分:2)

您应该使用DOMDocument类解析文本,并抓取元素的textContent

$html = '<td class="header subject">Text</td>';

$dom = new DOMDocument();
$dom->loadHTML( $html );

// Text
echo $dom->getElementsByTagName("td")->item(0)->textContent;

或者,如果您需要循环浏览多个td元素并仅显示具有类值"header subject"的元素的文本,则可以执行以下操作:

$tds = $dom->getElementsByTagName("td");

for ( $i = 0; $i < $tds->length; $i++ ) {
  $currentTD = $tds->item($i);
  $classAttr = $currentTD->attributes->getNamedItem("class");
  if ( $classAttr && $classAttr->nodeValue === "header subject" ) {
    echo $currentTD->textContent;
  }
}

演示:http://codepad.org/o1xqrnRS

答案 1 :(得分:1)

假设您的问题是因为您不知道如何解释该页面,您可能想尝试这个:

<?php 
$lines = file("/path/to/file.html");
foreach($lines as $i => $line)
{
   if (preg_match("'<td class=\"header subject\">(.*?)</td>'si", $line, $match))
   {
      echo "result=". $match[$i];
   }
}
?>