下面的代码搜索一个非常长的查询结果,“正文”并拉出引用的数字。我想将这些数字插入到单个列引用表中。当它是一个preg_match时,我有这个工作,但preg_match都抛出了一个扳手,它继续咆哮阵列字符串转换。每个“body”结果可以有多个数字结果,我相信这会导致多个数组。任何人都可以帮我插入这个吗?
$textToReplace = mysqli_query($conn, "SELECT body from T1");
while($row2 = $textToReplace->fetch_array()){
$body = $row2["body"];
preg_match_all('#"\d+"#', $body, $matches);
foreach($matches as $match) {
$id=$match;
var_dump($id);
// $sql = mysqli_query($conn, "INSERT into T2 VALUES($id)");
}
}
这是$ id:
上var_dump结果的片段array (size=1)
0 => string '"10064905"' (length=10)
array (size=3)
0 => string '"10064788"' (length=10)
1 => string '"10064797"' (length=10)
2 => string '"10064807"' (length=10)
array (size=1)
0 => string '"10063833"' (length=10)
array (size=1)
0 => string '"10063824"' (length=10)
array (size=2)
0 => string '"10063805"' (length=10)
1 => string '"10063796"' (length=10)
答案 0 :(得分:0)
preg_match_all()
返回一个二维数组。默认情况下,$matches[0]
包含所有完整的正则表达式匹配项,剩余的$matches[n]
包含捕获组n
的匹配项。在您的计划中,您需要迭代$matches[0]
:
foreach($matches[0] as $match) {
$id=$match;
var_dump($id);
$sql = mysqli_query($conn, "INSERT into T2 VALUES($id)");
}