1

是否可以仅使用 获取然后回显标签之间的内容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,因此多个标签应该没有问题。

4

2 回答 2

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元素并仅显示具有类 value 的那些文本"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

于 2012-05-13T05:06:26.343 回答
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];
   }
}
?>
于 2012-05-13T05:02:06.177 回答