HOWTO · PHP
PHP 模板字串
本教程演示瞭如何在 PHP 中建立模板字串,如 python 的模板函式。
本頁內容
模板字串是動態字串。假設你有一個名稱和任務列表,並且你希望將每個名稱和任務名稱一個一個地列印在一個字串中。
你可以設定一個模板字串,然後將列表一張一張列印出來。
Python 有一個內建函式 Template(),它將帶有變數的字串轉換為一個字串。
讓我們看看它是如何在 PHP 中完成的。
在 PHP 中使用 echo 關鍵字生成模板字串
生成模板字串最簡單的方法是使用 php 關鍵字 echo,我們可以將不同的變數放在字串的任何位置並列印出來。
<?php
$name = "Jack";
$last_name= "Enfield";
$job = "Software Engineer";
$company = "Microsoft";
echo "Employee name is {$name} {$last_name}, he is a {$job} at {$company}.";
?>
上面的程式碼使用給定變數的 name、last name、job 和 company 生成一個模板字串。
輸出:
Employee name is Jack Enfield, he is a Software Engineer at Microsoft.
我們可以將變數放在具有多個值的陣列中,並設定 foreach 迴圈和條件以列印具有不同值的多個模板字串。
使用 PHP strstr() 生成模板字串
PHP 有一個內建函式 strstr(),它生成一個模板字串。它有兩個引數,一個是模板字串,另一個是帶值的陣列。
<?php
$output_string = 'Employee name is $name $last_name, he is a $job at $company.';
$values = array( '$name' => 'Jack', '$last_name' => 'Enfield', '$job' => 'Software Engineer', '$company' => 'Microsoft');
echo strtr($output_string, $values);
?>
上面程式碼的輸出將是包含陣列值的字串。
輸出:
Employee name is Jack Enfield, he is a Software Engineer at Microsoft.
如果有多個員工的資訊怎麼辦?在這種情況下,我們可以使用多維陣列和 foreach 迴圈來生成多個字串。
<?php
$output_string = 'Employee name is $name $last_name, he is a $job at $company.';
$values = array(
array( '$name' => 'Jack' , '$last_name' => 'Enfield' , '$job' => 'Software Engineer', '$company' => 'Microsoft'),
array( '$name' => 'Samuel', '$last_name' => 'Stevens', '$job' => 'Software Tester', '$company' => 'Apple'),
array( '$name' => 'Mike', '$last_name' => 'Geller', '$job' => 'Salesman', '$company' => 'Amazon'),
array( '$name' => 'John', '$last_name' => 'Clay', '$job' => 'Manager', '$company' => 'Merriot Hotels')
);
foreach($values as $val){
echo strtr($output_string, $val);
echo "<br>";
}
?>
輸出:
Employee name is Jack Enfield, he is a Software Engineer at Microsoft.
Employee name is Samuel Stevens, he is a Software Tester at Apple.
Employee name is Mike Geller, he is a Salesman at Amazon.
Employee name is John Clay, he is a Manager at Merriot Hotels.
在 PHP 中使用 str_replace() 生成模板字串
str_replace() 是另一個用於生成字串的 PHP 內建函式。
它需要三個引數,第一個是要替換的值陣列,第二個是值,第三個是模板字串。
<?php
$pass = array('%name%', '%last_name%', '%job%', '%company%' );
$value = array('Jack', 'Enfield', 'Software Engineer', 'Microsoft');
echo str_replace($pass, $value, "Employee name is %name% %last_name%, he is a %job% at %company%.");
?>
str_replace() 會將帶有%% 的值替換為給定的值,並從給定的模板字串生成一個字串。
輸出:
Employee name is Jack Enfield, he is a Software Engineer at Microsoft.
在 PHP 中建立我們的函式以生成模板字串
我們還可以建立生成模板字串的函式。
<?php
$template = function ($values) {
extract($values);
return "Employee name is $name $last_name, he is a $job at $company.";
};
$values = array( 'name' => 'Jack', 'last_name' => 'Enfield', 'job' => 'Software Engineer', 'company' => 'Microsoft');
//No $ in the values array because extract function will itself detect values for variables.
echo $template($values);
?>
模板函式將首先從陣列中提取值,然後返回一個字串。
輸出:
Employee name is Jack Enfield, he is a Software Engineer at Microsoft.