2011-05-16 15 views

回答

5
printf('Hi %s, your password is %s', 'David', '[email protected]'); 

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

+0

我不知道的sprintf優雅的方式來返回修改後的字符串的往下掉的是你必須使用他們的語法等等%USERNAME將無法正常工作 – austinbv 2011-05-16 02:42:11

+2

sprintf'的'語法和相關的功能是很老,當時有意義。我認爲它仍然如此。 – pavium 2011-05-16 02:49:42

+0

它仍然是有道理的,你的名字基於類型,但如果你正在做一個解析器你的html看起來像'你好%s你的密碼是%s你可以通過轉到%s你有%s分鐘,直到你必須請求再次。「或類似的東西是不可讀的 – austinbv 2011-05-16 02:51:39

-1

str_replace取代它的​​是你在找什麼

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

如果你需要回聲,Alex's比我好。要更多地修改字符串,如果你想定義你用亞歷克斯替換的值,我的也會更好,你必須在'str_replace'的第一個參數中使用%s – austinbv 2011-05-16 02:39:45

+1

放置'%username'和'%pwd' – 2011-05-16 11:08:41

-1

如果第一部分字符串是靜態的,爲什麼不只是連接變量?這可能會給你更多的靈活性。

$username= "david"; 
$password = "password"; 
echo "hi". $username . "your password is". $password; 
相關問題