我只想在html文档中找到带有preg_match_all的所有元素。阅读文件后,我使用以下内容:
preg_match_all('<.*style=?.*>',$file,$patterns);
print_r( $patterns[0] ); die;
在&lt;之前提供所有元素但是有间距和其他东西。和&gt;。此外,输出在结果中有一个结束标记(例如:')。我玩弄preg表达式,但让我疯了。有人可以告诉我使用什么语法是正确的吗?
输出现在是:
Array
(
[0] => <table style="position:absolute;width:100%;height:100%;">
[1] => <div class="_barcode_pdf417" style="margin:0 auto;width:176px;height:132px;background:#FFF;color:#000;"><div style="margin:0 auto;margin:0;padding:0;border:0">
[2] => <div style="position:absolute;width:14px;height:128px;background:#000;"></div>
[3] => <div style="position:absolute;margin-left:18px;width:2px;height:128px;background:#000;"></div>
[4] => <div style="position:absolute;margin-left:22px;width:2px;height:128px;background:#000;"></div>
[5] => <div style="position:absolute;margin-left:26px;width:2px;height:128px;background:#000;"></div>
........
........
........
但我想:
Array
(
[0] => <table style="position:absolute;width:100%;height:100%;">
[1] => <div class="_barcode_pdf417" style="margin:0 auto;width:176px;height:132px;background:#FFF;color:#000;">
<div style="margin:0 auto;margin:0;padding:0;border:0">
[2] => <div style="position:absolute;width:14px;height:128px;background:#000;">
[3] => <div style="position:absolute;margin-left:18px;width:2px;height:128px;background:#000;">
[4] => <div style="position:absolute;margin-left:22px;width:2px;height:128px;background:#000;">
[5] => <div style="position:absolute;margin-left:26px;width:2px;height:128px;background:#000;">
......
......
感谢您的回答!亲切的问候。
答案 0 :(得分:1)
$html = <<< EOF
[0] => <table style="position:absolute;width:100%;height:100%;">
[1] => <div class="_barcode_pdf417" style="margin:0 auto;width:176px;height:132px;background:#FFF;color:#000;"><div style="margin:0 auto;margin:0;padding:0;border:0">
[2] => <div style="position:absolute;width:14px;height:128px;background:#000;"></div>
[3] => <div style="position:absolute;margin-left:18px;width:2px;height:128px;background:#000;"></div>
[4] => <div style="position:absolute;margin-left:22px;width:2px;height:128px;background:#000;"></div>
[5] => <div style="position:absolute;margin-left:26px;width:2px;height:128px;background:#000;"></div>
........
........
........"
EOF;
preg_match_all('/([<div|<table]+.*?style.*?>)/i', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
echo $result[1][$i];
}
将输出:
<table style="position:absolute;width:100%;height:100%;">
<div class="_barcode_pdf417" style="margin:0 auto;width:176px;height:132px;background:#FFF;color:#000;">
<div style="margin:0 auto;margin:0;padding:0;border:0">
<div style="position:absolute;width:14px;height:128px;background:#000;">
<div style="position:absolute;margin-left:18px;width:2px;height:128px;background:#000;">
<div style="position:absolute;margin-left:22px;width:2px;height:128px;background:#000;">
<div style="position:absolute;margin-left:26px;width:2px;height:128px;background:#000;">
但是,最好的选择是使用html dom parser
答案 1 :(得分:0)
我强烈建议不要以这种方式使用正则表达式来操作(X)HTML,因为PHP以DOMDocument扩展的形式为作业提供了更高级别的API。您可以使用它来迭代有效的DOm结构并查找具有特定属性的元素。操作非常类似于Javascript DOM操作,具有诸如GetElementById,GetElementByClassName等功能,您可以使用它们。
您可以使用它来迭代主体的子元素(及其递归子元素)来查找定义了样式的元素。