-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] 是第二个匹配组,依此类推。

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 回答