如何用php中的指定值替换字符串中的标记?

Dav*_*vid 2 php

php中有没有像这样的功能:

_str_replace(高%用户名,密码为%pwd,'大卫','P @ ssw0rd')将返回字符串"hi David,您的密码是P @ ssw0rd"

ale*_*lex 5

printf('Hi %s, your password is %s', 'David', 'P@ssw0rd');
Run Code Online (Sandbox Code Playgroud)

CodePad.

如果您不希望它立即回显,请使用sprintf().

或者,你可以做这个功能......

function _str_replace() {
    $args = func_get_args();
    $str = array_shift($args);
    foreach($args as $arg) {
       $str = preg_replace('/%\w+/', $arg, $str, 1);
    }
    return $str;
}
Run Code Online (Sandbox Code Playgroud)

CodePad.

......但我不会打扰.您无法在函数中按原始名称引用变量,因为该信息不会发送到函数.

你可以使用一个关联数组......

function _str_replace($str, $vars) {
    foreach($vars as $name => $var) {
       $str = preg_replace('/%' . preg_quote($name, '/') . '/', $var, $str);
    }
    return $str;
}
Run Code Online (Sandbox Code Playgroud)

CodePad.

或者,如果要在关联数组中发送标识符,可以将其替换为函数体 return str_replace(array_keys($vars), array_values($vars), $str);

  • `sprintf`和相关函数的语法很老,当时很有意义.我认为它仍然存在. (2认同)