-1

これが私のコードです:

preg_match_all('/<a href="(.+?)index.php(.+?)&abc=(.+?)"/', $dataToParse, $matches);

foreach ($matches as $val)
{
    $absUrl = $val[1] . 'index.php' . $val[2] . '&abc=' . $val[3];

    echo $absUrl;
}

ただし、 .$val[1]を含む、一致した文字列全体<a hrefです。構文が間違っていると思いますが、うまく修正できませんでした。これを適切に行う方法がわかりません。

4

2 に答える 2

4

次のように、定数のPREG_SET_ORDER後に定数を渡してみてください。$matches

preg_match_all("/.../",$dataToParse,$matches,PREG_SET_ORDER);

理由の詳細については、ドキュメントを参照してください。

于 2013-02-18T21:26:49.913 に答える
0

$matches[0] は文字列全体、$matches[1] は最初の一致グループ、$matches[2] は 2 番目の一致グループなどです。

for( $i = 0; $i < count( $matches[1]); $i++)
{
    $absUrl = $matches[1][$i] . 'index.php' . $matches[2][$i] . '&abc=' . $matches[3][$i];
    echo $absUrl;
}
于 2013-02-18T21:32:26.277 に答える