嗨,我有一个数组,我想将一个变量传递给一个函数。
'#\@(.*?)\;#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
答案 0 :(得分: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;,怎么回事?”用“你好,有些文字之前的文章莱昂纳多塞尔索姆,怎么回事?”。