[英]php curly braces replace values
我從未在php中使用花括號
但是我正在更新一個現有的網站...
在數據庫中,我有諸如
YOUR NAME {CH_NAME} {URL_NAME}
我想檢索信息並將其顯示在適當的位置,以使CH_NAME變量的值與URL_NAME相同,並最終顯示完整的信息,例如:
1-普通
$beforeStr="YOUR NAME {CH_NAME} {URL_NAME}";
$CH_NAME="John";
$URL_NAME="http://xxxx";
echo $beforeStr ; //would like to show : YOUR NAME John http://xxxx
問候
只有您必須使用str_replace
:
$beforeStr="YOUR NAME {CH_NAME} {URL_NAME}";
$CH_NAME="John";
$URL_NAME="http://xxxx";
$OTHER = "OTHER";
$beforeStr = str_replace(
array('{CH_NAME}','{URL_NAME}','{OTHER}'),
array($CH_NAME,$URL_NAME,$OTHER),
$beforeStr);
echo $beforeStr ;
另一種方法是:
$beforeStr = "YOUR NAME {CH_NAME} {URL_NAME} - {OTHER} ";
$variables = array(
'CH_NAME'=>'John',
'URL_NAME'=>'http://xxxx',
'OTHER'=>'other'
);
//if var exist then replace
$response = preg_replace_callback('/{(.+?)}/ix',function($match)use($variables){
return !empty($variables[$match[1]]) ? $variables[$match[1]] : $match[0];
},$beforeStr);
echo $response;
如果您真的想使用花括號,請嘗試此操作。 所有替換將自動完成,僅從匹配的變量名稱開始。
$CH_NAME = "John";
$URL_NAME = "http://xxxx";
$beforeStr = "YOUR NAME {CH_NAME} {URL_NAME}";
preg_match_all('/{(\w+)}/', $beforeStr, $matches);
$afterStr = $beforeStr;
foreach ($matches[0] as $index => $var_name) {
if (isset(${$matches[1][$index]})) {
$afterStr = str_replace($var_name, ${$matches[1][$index]}, $afterStr);
}
}
echo $afterStr;
使用字符串插值。 您需要使用雙引號定界字符串"
。然后在括號中加一個美元符號:
echo "Hello ${NAME}";
括號實際上並沒有為您做任何事情,因為以下方法也可以:
echo "Hello $NAME";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.