This regex的工作方式应该如此,但也许可以让它变得更好一点?
<tr class="KNap"><td align="left">(.*)<\/td><td><a.*\n.*\n.*\n.*id" value="(.*)"><input type="hidden" name="sh" value="(.*)"
正则表达式有效,但正如您所看到的那样,它有相当多的步骤。 (在这种情况下为21837。)
答案 0 :(得分:1)
如评论中所述,请熟悉解析器和xpath查询 对于您的具体示例,这可能是:
<?php
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($your_html_here, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
libxml_use_internal_errors(false);
$xpath = new DomXPath($dom);
# KKom
$text = $xpath->query("//tr[@class='KNap']/td/text()")->item(0)->textContent;
$form = $xpath->query("//tr[@class='KKom']//form")->item(0);
$id = $xpath->query("input[@name='id']", $form)->item(0)->getAttribute("value");
$sh = $xpath->query("input[@name='sh']", $form)->item(0)->getAttribute("value");
echo "$text, $id, $sh";
<小时/> 产生
Re: Zero Kara Hajimeru Isekai Seikatsu ep01, 60564, c0daea22d108b4d6888f6037623b61d505d5b345