Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg_match_all在php中捕获特定父标记的特定文本_Php - Fatal编程技术网

preg_match_all在php中捕获特定父标记的特定文本

preg_match_all在php中捕获特定父标记的特定文本,php,Php,我需要解析的文本是 <td width="35%"><small>Bourke AP AWS</td> <!--$94703--> <td>&nbsp;</td> <td align="center"><small>ESE 13</small></td> <td align="right"><small> 21</small&

我需要解析的文本是

<td width="35%"><small>Bourke AP AWS</td> <!--$94703-->
  <td>&nbsp;</td>
  <td align="center"><small>ESE  13</small></td>
  <td align="right"><small> 21</small></td>
  <td align="right"><small> 16</small></td>
  <td align="right"><small> 21</small>
Bourke AP AWS
ESE 13
21
16
21
我需要能够在最后的
标记之前提取数字“21”,但我还需要修改代码,以便仅在页面中的唯一位置获取此数字,例如,对于名称“Bourke AP AWS”或“”而言,这是天气观测站点的唯一标识符。页面上还有很多其他的文本块,唯一的区别就是名称或被注释掉的站号

我的代码

preg_match_all('/<td width="35%"><small>Bourke AP AWS<\/td>(.*?).*?<td>([^<]+)<\/td>.*?<td align="center"><small>(.*?)<\/small><\/td>.*?<td align="center"><small>(.*?)<\/small><\/td>.*?<td align="right"><small>(.*?)<\/small><\/td>.*?<td align="right"><small>(.*?)<\/small><\/td>.*?<td align="right"><small>(.*?)<\/small>/s', $datamaxtemp, $matchnewtemp, PREG_SET_ORDER);
$ymaxtemppmq = strip_tags($matchnewtemp[0][0]); 

preg_match_all('/Bourke AP AWS(.*)*([^不要使用
preg\u match…
函数解析xml。使用xml解析器请发布输入和所需输出的清晰示例。因此,完全按照您的要求进行preg\u match\u可能是可能的,但我不确定其性能。我尝试过做不到。我的目的是:然后,您为每个$matchnewtemp添加一个arr中的每个键ay(值为21的键)谢谢大家的关注。输入如上所示,所需的输出是数字“21”。我将保留这个问题;希望有人能发现我在编写preg_match_all函数时犯的错误。错误是从使用正则表达式开始。在这个特定的示例中,HTML中存在错误,因此正则表达式很快就会迷失方向。请使用HTML解析器(由于错误,不要使用XML解析器)并从最后一个节点检索内容。