PHP =&gt;如何以这样一种方式搜索这个字符串:当我class="font8text">N</span>'
给我'EARLL'时,它在下一个<span>
。
<div align="left" style=";">
<span style="width:15px; padding:1px; border:1pt solid #999999; background-color:#CCFFCC; text-align:center;" class="font8text">Y</span>
<span style="text-align:left; white-space:nowrap;" class="font8text">DINNIMAN</span>
</div>
<div align="left" style="background-color:#F8F8FF;">
<span style="width:15px; padding:1px; border:1pt solid #999999; background-color:#FFCCCC; text-align:center;" class="font8text">N</span>
<span style="text-align:left; white-space:nowrap;" class="font8text">EARLL</span>
</div>
答案 0 :(得分:1)
使用DOM解析器,例如:http://simplehtmldom.sourceforge.net/
如上所述(a painless amount of times)。正则表达式不是解析HTML的好方法。实际上,你无法用Regex真正解析HTML。 HTML不是任何形式的常规。你只能提取位。而且(在大多数情况下)仍然是非常不可靠的数据。
最好使用DOM解析器。因为解析器将HTML解析为文档,所以更容易遍历。
示例:
include_once('simple_html_dom.php');
$dom = file_get_html('<html>...');
foreach($dom->find("div.head div.fact p.fact") as $element)
die($element->innertext);
答案 1 :(得分:0)
示例:
$str = <insert your string here>; // populate data
$_find = 'class="font8text">'; // set the search text
$start = strpos($str,$find) + strlen($_find); // find the start off the text and offset by the $needle
$len = strpos($str,'<',$start) - $start; find the end, then subtract the start for length
$text = substr($str,$start,$len); // result
答案 2 :(得分:0)