2016-11-07 7 views
0

simple_html_dom_parserを使用して、表のセルにアンカータグがあるかどうかを確認する正規表現を使用して、anchorタグのhref属性からteamId番号を抽出しようとしています。preg_match_allを使用して値のhrefを確認する方法

$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を取得するための正しい識別子を使用していることを確認しました。私は間違ってhrefの値を選択するためにDOMパーサーを使用している場合、またはそれが論理的なエラーであるかどうかを調べることはできません。

これは、アンカータグのhrefの値です:? /FFL /クラブハウスleagueId = 347987 & teamId = 15 & seasonId = 2015

私は一緒に$飛行配列にマッチしたteamIdを入れたいですテーブル

+0

なぜ正規表現を使用していますか?なぜあなたは文字列にアクセスして分割しないのですか? 'explode( '='、explode( '&'、explode( '?'、$ urlstring)[1]))[1]'は上記の例から結果 '15'を返します。 – junkfoodjunkie

答えて

0

から他のTD(または$細胞)を持つあなたは、これを変更する必要があります...

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

...

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

は今、あなたはちょうどあなたがtd要素ではなくahrefを探している$anchor$cellを変換しています。

+0

ありがとうございました。 $ flight配列に格納されたteam_idを取得できましたが、hrefの値を$ team_idの最初の配列項目として格納しています。したがって、$ flight配列がパターンマッチとhrefの両方を格納しているとき – CbassOlympics

関連する問題