我想要做的是将输入字符串中的“[replace]”替换为replace数组中的相应vaule。值的总数将发生变化,但替换数组中的数字始终与输入字符串中的数字相同。我已尝试使用preg_replace和preg_replace_callback执行此操作,但我无法为[replace]获取正确的模式,我也尝试使用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>
答案 0 :(得分:3)
您使用%
转义表%%
:
$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>