不知道如果PHP可以做到這一點,所以我認爲我會問專家:傳遞變量轉換成字符串
我想有一個字符串數組中,我有一個佔位符:
array (
1 => "this is string $1",
2 => "this is string $2");
然後,我想在很多頁面中引用此值,並傳遞相關頁面的值:
例如 print(array ['1'],「value to replace $ 1」)
這可能嗎?
感謝
不知道如果PHP可以做到這一點,所以我認爲我會問專家:傳遞變量轉換成字符串
我想有一個字符串數組中,我有一個佔位符:
array (
1 => "this is string $1",
2 => "this is string $2");
然後,我想在很多頁面中引用此值,並傳遞相關頁面的值:
例如 print(array ['1'],「value to replace $ 1」)
這可能嗎?
感謝
我建議使用sprintf()
echo sprintf('this string is %s', $array[1]);
這不適用於字符串本地化的情況。 - 令牌的順序可能不同。 – Erbureth
如果你做得對,這也適用於本地化的字符串:'sprintf(translate('this string is%s'),translate($ array [1]));'和'這個字符串是%s'被翻譯到'Der Text lautet%s'(和'$ array [1]'到「I-dont-care」;))。一切都很好。使用編號佔位符,您甚至可以更改命令'%2 $ s是第二個參數,%1 $ s是第一個' – KingCrunch
不,它不是 - 「這是$ 2的$ 1」 - >「Sore wa $ 2 no $ 1 「編輯:對,沒有那個。 – Erbureth
我建議正則表達式替換文本標記。 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);
正則表達式對於簡單字符串替換隻是過大。 – KingCrunch
我同意 - 但有點過大,然後讓我以任何順序放置多個字符串。我喜歡這個理論,但會與sprintf()一起開始。這爲賽道的靈活性提供了更多的靈活性 –
是否佔位符必須爲每個陣列值不同?即,你的例子中的兩個字符串是不是使用「$ 1」作爲佔位符的原因是什麼? – Farray