gpt4 book ai didi

php - 如何在 PHP 中提取 标记的内容?

转载 作者:可可西里 更新时间:2023-11-01 00:47:54 24 4
gpt4 key购买 nike

我是正则表达式的新手。我想问一下这个 html 标签的正确组合是什么:

   <tr class="calendar_row" data-eventid="39654">
<td class="alt1 eventDate smallfont" align="center"/></td>
<td class="alt1 smallfont" align="center">3:34am</td>
<td class="alt1 smallfont" align="center">CNY</td>
</tr>

我正在使用这个:

   $html = website html from a url
$match = array();

$pattern = "/(<tr.*?\data-eventid\>.*?<\/tr>)/ims";
preg_match_all($pattern, $html, $match);

但它不起作用:|我只想选择那个 tr 元素的所有内容..

最好的问候。

最佳答案

使用 DOMDocument

你不应该在这样的事情上使用正则表达式;而是创建一个 DOMDocument从您的标记中,然后从该特定元素中选择子项。例如,以下将为我们提供每个 <td> 的集体 html标记中的标记:

// Our HTML will eventually go here
$innerHTML = "";

// Create a new DOMDocument based on our HTML
$document = new DOMDocument;
$document->loadHTML($html);

// Get a NodeList of all <td> Elements
$cells = $document->getElementsByTagName("td");

// Cycle over each <td>, adding its HTML to $innerHTML
foreach ($cells as $cell) {
$innerHTML .= $document->saveHTML($cell);
}

// Output our glorious HTML
echo $innerHTML;

正则表达式

如果你真的想抓取tr之间的东西使用 preg_match 的标签,以下应该有效:

// Our pattern for capturing all that is between <tr> and </tr>
$pattern = "/<tr[^>]*>(.*)<\/tr>/s";

// If a match is found, store the results in $match
if (preg_match($pattern, $html, $match)) {
// Show the captured value
echo $match[1];
}

结果如下:

<td class="alt1 eventDate smallfont" align="center"></td>
<td class="alt1 smallfont" align="center">3:34am</td>
<td class="alt1 smallfont" align="center">CNY</td>

关于php - 如何在 PHP 中提取 <tr> 标记的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com