php未定义变量使用php函数[重复]

Getting undefined variable error when i put string replace code in function

Bellow code show undefined for dataemail, AND $datafname but SESSION username is okay, also when i try to echo this dataemail, AND $datafname it show logged user email and fullname

<?php
function mentioned($input_str){
    $input_str = strip_tags($input_str);
    $input_str = htmlentities($input_str);

    $wordInString = array('@user@','@email@','@fname@');
    $replaceInString = array($_SESSION['username'], $dataemail, $datafname); // the error is from here
    return str_replace($wordInString, $replaceInString, $input_str);
}
$match_user = mentioned($info_body);
?>

This bellow code work well without error but i need to code it in a function so i can reuse it anywhere without coding it again

<?php
            $string = $info_body;
            $wordInString = array('@user@','@email@','@fname@');
            $replaceInString = array($_SESSION['username'] ,$dataemail,$datafname);
            $match_user = str_replace($wordInString, $replaceInString, $string);
echo $match_user;
?>
</div>

By default, PHP functions don't have access to global variables, so your function do not see the two "data" variables.

The best solution would be to pass them as argument:

function mentioned($input_str, $dataemail, $datafname){
    $input_str = strip_tags($input_str);
    $input_str = htmlentities($input_str);

    $wordInString = array('@user@','@email@','@fname@');
    $replaceInString = array($_SESSION['username'], $dataemail, $datafname); // the error is from here
    return str_replace($wordInString, $replaceInString, $input_str);
}
$match_user = mentioned($info_body, $dataemail, $datafname);

Another solution would be to declare them as global on top of the function, but that would make your code less re-usable and more difficult to maintain, so use with caution:

function mentioned($input_str){
    global $dataemail;
    global $datafname;
    ...