这是我的代码:
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
。我相信我的语法有误,但我一直试图修复它,没有运气。不确定如何正确地做到这一点。
答案 0 :(得分:4)
尝试在PREG_SET_ORDER
之后传递常量$matches
,如下所示:
preg_match_all("/.../",$dataToParse,$matches,PREG_SET_ORDER);
有关原因的详细信息,请参阅documentation
答案 1 :(得分:0)
$ matches [0]是整个字符串,$ matches [1]是第一个匹配组,$ match [2]是第二个匹配组,依此类推。
for( $i = 0; $i < count( $matches[1]); $i++)
{
$absUrl = $matches[1][$i] . 'index.php' . $matches[2][$i] . '&abc=' . $matches[3][$i];
echo $absUrl;
}