0

嗨,我有一个数组,我想将一个变量传递给一个函数。

'#\@(.*?)\;#si' =>  'some before text' . retrieveName('$1') . 'some after text,'

function retrieveName($poster_id){
    $sanitized_id = sanitizeIn($poster_id);

    $getname = mysql_query("SELECT * FROM users WHERE userid = '$sanitized_id';") 
                or die(mysql_error());
    $namerow = mysql_fetch_array($getname);
    $exists = mysql_num_rows($getname);

    if($exists == "0"){
      return $sanitized_id;
    } else {
      return $namerow['username'];
    }
}

它应该取 的值$1,检查数据库中是否有具有该 ID 的用户,然后返回他们的用户名。但是没有参数被传递给retrieveName

4

1 回答 1

1

retrieveName 函数应为:

function retrieveName($poster_id){
    $sanitized_id = sanitizeIn($poster_id);
    $get_name = mysql_query("SELECT * FROM users WHERE userid = '$sanitized_id';") or die(mysql_error());
    $name_row = mysql_fetch_array($get_name);
    return $name_row['username'];
}

我强烈建议在那里放置一些错误检查,如果找不到 ID 会发生什么?

编辑:

如果您尝试执行“preg_replace 模板”,则该行应为:

'#@(.*?);#sie' =>  '"some before text".retrieveName("\1")."some after text"',

'e' 在修饰符中执行代码。

这应该改变,例如,“你好,@lserni;怎么样?” 与“你好,一些文本之前的文本Leonardo Sernisome 文本之后,怎么样?”。

于 2012-07-09T06:13:07.890 回答