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

pqwbnv8z  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(135)

我想做的是将输入字符串中的“[replace]”替换为替换数组中的相应值。值的总数会改变,但替换数组中的数字始终与输入字符串中的数字相同。我试过用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>
cotxawn7

cotxawn71#

%%转义表的%

$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>

相关问题