3 回答
TA贡献2011条经验 获得超2个赞
正则表达式不是执行此任务的正确工具,XML解析器要容易得多:
$html = '<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 63px; white-space: nowrap;">Title </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 349px; white-space: nowrap;">1234 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 461px; white-space: nowrap;">$30 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 563px; white-space: nowrap;">$10,000,000 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 777px; white-space: nowrap;">3,000,000 </p>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
$parts = $xml->xpath('//p[@class="ft01"]/text()'); // find all texts inside p tags, with class ft01
$array_cost_name = (string) $parts[2];
$array_return_name = (string) $parts[3];
$array_number_name = (string) $parts[4];
echo $array_cost_name ; // $30
echo $array_return_name ; // $10,000,000
echo $array_number_name ; // 3,000,000
TA贡献1802条经验 获得超10个赞
你可以使用一个简单的全局正则表达式 /ace:不换行;”>(.*) <\/p>/
或沿线的任何内容来获取您要查找的组,然后删除前 2 个项目以仅获取最后 3 个项目。下面是一个示例和一个用于测试它的链接。
$html_content = '<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 63px; white-space: nowrap;">Title </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 349px; white-space: nowrap;">1234 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 461px; white-space: nowrap;">$30 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 563px; white-space: nowrap;">$10,000,000 </p>
<p class="ft01" style="margin: 0; padding: 0; font-size: 16px; font-family: Times; color: #000000; position: absolute; top: 103px; left: 777px; white-space: nowrap;">3,000,000 </p>';
preg_match_all('/ace: nowrap;">(.*) <\/p>/', $html_content, $array_match);
$array_match = array_slice($array_match[0], 2); ;
print_r($array_match);
http://sandbox.onlinephpfunctions.com/code/5ac69d44ff8168b4b21133c46dfa9c6db6986b6a
TA贡献1735条经验 获得超5个赞
通过正则表达式,您可以尝试以下方式:
\preg_match_all('/<p.*>(.*)<\/p>/', $html, $out); $result = $out[1];
这将捕获标记之间的所有字符。<p></p>
- 3 回答
- 0 关注
- 74 浏览
添加回答
举报