Php preg_match_all未捕获所有预期结果
我正试图从以下来源获得一些信息:Php preg_match_all未捕获所有预期结果,php,regex,Php,Regex,我正试图从以下来源获得一些信息: <random htmlcode here> <td style="BORDER-RIGHT-STYLE:none;"> <a id="dgWachtlijstFGI_ctl03_hlVolnaam" title="Klant wijzigen" class="wl" href="javascript: Pop(600,860,'klantwijzig','FrmKlant.aspx','? Wijzig=true&a
<random htmlcode here>
<td style="BORDER-RIGHT-STYLE:none;">
<a id="dgWachtlijstFGI_ctl03_hlVolnaam" title="Klant wijzigen" class="wl" href="javascript: Pop(600,860,'klantwijzig','FrmKlant.aspx','? Wijzig=true&lcSchermTitel=&zoekPK=+++140+12++8',false,true); ">FIRST LINE A</a>
(SECOND LINE A)<br>
THIRD LINE A </td>
<random htmlcode here>
<td style="BORDER-RIGHT-STYLE:none;">
<a id="dgWachtlijstFGI_ctl04_hlVolnaam" title="Klant wijzigen" class="wl" href="javascript: Pop(600,860,'klantwijzig','FrmKlant.aspx','?Wijzig=true&lcSchermTitel=&zoekPK=+++140+12++8',false,true); ">FIRST LINE B</a>
(SECOND LINE B)<br>
THIRD LINE B </td>
<random htmlcode here>
我要找的是:
[0] => Array ( [0] => FIRST LINE A [1] => FIRST LINE B )
[1] => Array ( [0] => (SECOND LINE A) [1] => (SECOND LINE B) )
[2] => Array ( [0] => THIRD LINE A [1] => THIRD LINE B ) )
$regexp=“FrmKlant.aspx.*\”>(.*)s(.*)
\s(.*)s\s(.*);
尝试使用正则表达式从HTML/XML中提取信息通常不是一个好主意。正则表达式不适合处理嵌套结构。
如果您的“随机html”部分足够邪恶,那么您可以尝试的一切都将可怕地破坏,因此只有在对html有很好的控制时才使用它们
试试解析器。(谷歌找到了我,但我还没有试过)使用PHP的DOM解析器
不完整的示例,但要让您开始:
$dom = new DOMDocument();
$dom->loadHTML($yourHtmlDocument);
$xPath = new DOMXPath($dom);
$elements = $xPath->query('\\random\td\a'); // Or whatever your real path would be
foreach($elements as $node) {
echo $node->nodeValue;
}
要阅读文件的全部内容,请看一下lol。不管我们说了多少次……他们一直在问,嗯?不要使用正则表达式解析html
[0] => Array ( [0] => FIRST LINE A [1] => FIRST LINE B )
[1] => Array ( [0] => (SECOND LINE A) [1] => (SECOND LINE B) )
[2] => Array ( [0] => THIRD LINE A [1] => THIRD LINE B ) )
$regexp = "FrmKlant.aspx.*\">(.*)<\/a>\s(.*)<br>\s(.*)\s\s(.*)</td>";
$dom = new DOMDocument();
$dom->loadHTML($yourHtmlDocument);
$xPath = new DOMXPath($dom);
$elements = $xPath->query('\\random\td\a'); // Or whatever your real path would be
foreach($elements as $node) {
echo $node->nodeValue;
}