preg_match_all php插入结果

时间:2014-11-25 19:06:26

标签: php mysql arrays preg-match-all

下面的代码搜索一个非常长的查询结果,“正文”并拉出引用的数字。我想将这些数字插入到单个列引用表中。当它是一个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)      

1 个答案:

答案 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)");
}