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

时间:2011-05-16 02:33:57

标签: php

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

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

3 个答案:

答案 0 :(得分:5)

printf('Hi %s, your password is %s', 'David', 'P@ssw0rd');

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;
}

CodePad

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

如果您使用了关联数组......

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

CodePad

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

答案 1 :(得分:-1)

str_replace正是您要找的

$string = "hi %username your password is %pwd";
$string = str_replace("%username", $username, $string);
$string = str_replace("%pwd",$password, $string):
echo $string;

答案 2 :(得分:-1)

如果字符串的第一部分是静态的,为什么不连接变量呢?这可以为您提供更大的灵活性。

$username= "david";
$password = "password";
echo "hi". $username . "your password is". $password;