How to replace a nth occurrence in a string

前端 未结 4 709
盖世英雄少女心
盖世英雄少女心 2020-12-19 04:28

I need a simple and fast solution to replace nth occurrence (placeholder) in a string.

For example, nth question mark in sql query should be replaced with a provide

4条回答
  •  别那么骄傲
    2020-12-19 04:46

    None of your solutions worked for me, so I made this:

    $sql1 = "SELECT * FROM allegro_user WHERE User_Emp_Nb = ? AND User_Activ_status = ?";
    $sql2 = "SELECT * FROM allegro_user WHERE User_Emp_Nb = :emp_nb AND User_Activ_status = :activ";
    
    function prepare_query($sql, $args) {
        foreach ($args as $key => $value) {
            if (is_numeric($key)) {
                $sql = preg_replace('/\?/', "'" . $value . "'", $sql, 1);
            } else {
                $sql = str_replace($key, "'" . $value . "'", $sql);
            }
        }
        return $sql;
    
    }
    
    tab($sql1);
    $sql = prepare_query($sql1, array('0216313', 'A'));
    tab($sql1);
    
    tab($sql2);
    $sql = prepare_query($sql2, array(':emp_nb' => '0216313', ':activ' => 'A'));
    tab($sql2);
    

    tab() is just a function I use for printing :

    echo '
    ';
    print_r($tab);
    echo '
    ';

提交回复
热议问题