我想要做的是将输入字符串中的“[replace]”替换为替换数组中的相应值。值的总数将发生变化,但替换数组中的数字始终与输入字符串中的数字相同。我尝试过使用
preg_replace()
和 preg_replace_callback()
执行此操作,但我无法获得正确的[替换]模式,我也尝试使用 vsprintf()
但 %
中的 <table width="100%">
搞砸了。
替换数组:
$array = array('value 1','value 2','value 3');
输入字符串
$string = '
<table width="100%">
<tr>
<td>Name:</td>
<td>[replace]</td>
</tr>
<tr>
<td>Date:</td>
<td>[replace]</td>
</tr>
<tr>
<td>Info:</td>
<td>[replace]</td>
</tr>
</table>
';
想要的结果
<table width="100%">
<tr>
<td>Name:</td>
<td>value 1</td>
</tr>
<tr>
<td>Date:</td>
<td>value 2</td>
</tr>
<tr>
<td>Info:</td>
<td>value 3</td>
</tr>
</table>
你可以用
%
来逃避表的 %%
:
$string = <<<EOD
<table width="100%%">
<tr>
<td>Name:</td>
<td>%s</td>
</tr>
<tr>
<td>Date:</td>
<td>%s</td>
</tr>
<tr>
<td>Info:</td>
<td>%s</td>
</tr>
</table>
EOD;
$array = array('value 1','value 2','value 3');
echo vsprintf($string, $array);
输出:
<table width="100%">
<tr>
<td>Name:</td>
<td>value 1</td>
</tr>
<tr>
<td>Date:</td>
<td>value 2</td>
</tr>
<tr>
<td>Info:</td>
<td>value 3</td>
</tr>
</table>