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.