如何使用preg_match_all检查href的值

时间:2016-11-07 21:14:45

标签: php regex-negation

使用simple_html_dom_parser,我试图从锚标记href属性中提取teamId编号,使用正则表达式检查表格单元格是否有锚标记。

$rowData= array();

foreach($table->find('tr') as $row ){

 $flight = array();

foreach ($row->find('td') as $cell){

if ($cell->find('a')){
  foreach ($cell as $anchor)
  $anchor = $cell->getAttribute('href');
  $pattern = '/^.*?teamId=(\d+).*$/';
  // write the pregmatch 
  preg_match_all($anchor, $pattern, $team_id);
  //put the team_id into the end flight array

  $flight[]= $team_id;
}

$flight[]= $cell->plaintext;
}
//pushes each TR into the array 


$rowData[] = $flight;
}

当我运行脚本时,我得到一个空的常规出现错误。我已经使用RegEx检查程序来确保我使用正确的标识符从href url获取teamId。我不知道我是否错误地使用DOM解析器来选择href值或者它是否是逻辑错误。

这是锚标记中href的值: / ffl第/会所leagueId = 347987&安培; teamId = 15&安培; seasonId = 2015

我想将匹配的teamId与表中的其他td(或$ cells)一起放入$ flight数组

1 个答案:

答案 0 :(得分:0)

你应该改变这个......

if ($cell->find('a')){
  foreach ($cell as $anchor)

到此......

foreach ($cell->find('a') as $anchor){

目前您只是将$cell转换为$anchor,因此您在href元素而不是td上寻找a。< / p>