【问题标题】:preg_match_all php inserting resultspreg_match_all php 插入结果
【发布时间】:2014-11-25 19:06:26
【问题描述】:

下面的代码搜索一个很长的查询结果“body”并提取出带引号的数字。我想将这些数字插入到单列引用表中。当它是一个 preg_match 时,我有这个工作,但是 preg_match all 已经抛出了一个扳手,它继续吠叫数组字符串转换。每个“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 的结果的 sn-p:

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)      

【问题讨论】:

  • preg_match_all() 返回一个二维数组。第一个元素是正则表达式的所有匹配项,其余元素是正则表达式中每个捕获组的匹配项。

标签: php mysql arrays preg-match-all


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-05-19
    • 2015-10-17
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2016-11-17
    • 2016-07-03
    相关资源
    最近更新 更多