使用值数组(一次一个)替换字符串中的多个相同占位符

问题描述 投票:0回答:1

我想要做的是将输入字符串中的“[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>
php arrays regex preg-replace placeholder
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.