繁体   English   中英

preg_replace用数组替换

[英]preg_replace replacing with array

我想做的是用替换数组中的对应值替换输入字符串中的“ [replace]”。 值的总数将改变,但是替换数组中的数字始终与输入字符串中的数字相同。 我曾尝试使用preg_replace和preg_replace_callback来执行此操作,但我无法正确使用[replace]的模式,我也尝试使用vsprintf,但<table width="100%">中的<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM