2016-11-07 5 views
0

Mit dem simple_html_dom_parser, ich versuche, die TeamId-Nummer aus dem Anchor Tags href -Attribut zu extrahieren, mit regulären Ausdruck, um zu überprüfen, ob die Zelle der Tabelle ein Anchor-Tag hat.Wie preg_match_all zu überprüfen href für einen Wert

$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; 
} 

Wenn ich das Skript ausführen, bekomme ich einen leeren regulären Epressionsfehler. Ich habe RegEx-Checker verwendet, um sicherzustellen, dass ich die korrekten IDs verwende, um die TeamId von der href-URL zu erhalten. Ich kann nicht herausfinden, ob ich den DOM-Parser falsch benutze, um den href-Wert zu wählen, oder ob es ein logischer Fehler ist.

Dies ist der Wert des href im Anker-Tag: /ffl/Clubhaus Liga-= 347987 & Mannschafts-ID = 15 & seasonId = 2015

ich entlang den angepassten Mannschafts-ID in den $ Flug Array setzen will? mit dem anderen td (oder Zellen $) aus der Tabelle

+0

Warum verwenden Sie Regex dafür? Warum greifen Sie nicht einfach auf die Zeichenfolge zu und teilen sie auf? 'explode ('=', explodieren ('&', explodieren ('?', $ urlstring) [1]) [1]) [1]' gibt das Ergebnis '15' aus dem obigen Beispiel. – junkfoodjunkie

Antwort

0

du ...

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

um dies ändern sollte ...

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

jetzt Sie konvertieren nur die $cell-$anchor so suchen Sie nach einem href auf einem td Element und nicht die a.

+0

Vielen Dank für Ihre Hilfe. Ich konnte die team_id im $ flight-Array ablegen, aber es speichert auch den href-Wert als erstes Array-Element in $ team_id. Wenn das $ flight-Array sowohl die Musterübereinstimmung als auch die href speichert – CbassOlympics