2011-11-11 146 views
0

不知道如果PHP可以做到這一點,所以我認爲我會問專家:傳遞變量轉換成字符串

我想有一個字符串數組中,我有一個佔位符:

array (
    1 => "this is string $1", 
    2 => "this is string $2"); 

然後,我想在很多頁面中引用此值,並傳遞相關頁面的值:

例如 print(array ['1'],「value to replace $ 1」)

這可能嗎?

感謝

+0

是否佔位符必須爲每個陣列值不同?即,你的例子中的兩個字符串是不是使用「$ 1」作爲佔位符的原因是什麼? – Farray

回答

3

我建議使用sprintf()

echo sprintf('this string is %s', $array[1]); 
+0

這不適用於字符串本地化的情況。 - 令牌的順序可能不同。 – Erbureth

+0

如果你做得對,這也適用於本地化的字符串:'sprintf(translate('this string is%s'),translate($ array [1]));'和'這個字符串是%s'被翻譯到'Der Text lautet%s'(和'$ array [1]'到「I-dont-care」;))。一切都很好。使用編號佔位符,您甚至可以更改命令'%2 $ s是第二個參數,%1 $ s是第一個' – KingCrunch

+0

不,它不是 - 「這是$ 2的$ 1」 - >「Sore wa $ 2 no $ 1 「編輯:對,沒有那個。 – Erbureth

1

我建議正則表達式替換文本標記。 http://www.php.net/manual/en/function.preg-replace.php

實施例:

$template = "Invoice was issued on <<ISSUED-DATE>> and has to be paid on <<DUE-DATE>> at the latest"; 

$patterns = array(
    "/".preg_quote("<<ISSUED-DATE>>")."/", 
    "/".preg_quote("<<DUE-DATE>>")."/" 
); 
$replacements = array(
    $issued, 
    $due 
); 
$newtext = preg_replace($patterns, $replacements, $template); 
+0

正則表達式對於簡單字符串替換隻是過大。 – KingCrunch

+0

我同意 - 但有點過大,然後讓我以任何順序放置多個字符串。我喜歡這個理論,但會與sprintf()一起開始。這爲賽道的靈活性提供了更多的靈活性 –