preg_replace替换为数组

时间:2010-06-12 07:17:01

标签: php regex arrays preg-replace

我想要做的是将输入字符串中的“[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>

1 个答案:

答案 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>