使用带回调的preg_replace替换字符串中的所有值

时间:2013-07-11 20:56:52

标签: php preg-replace

我不确定是否可以使用preg_replace来完成,但这是我到目前为止所做的

$string='
<div class="row">
  <section> [1] </section>
  <section> [2] </section>
  <section> [5] </section>
</div>';


function searchArray($myarray, $id) {
    foreach ($myarray as $item) {
        if ($item[$id] == $id)
            return $item['name'];
    }
    return false;
}

所以我需要在preg_replace中运行$ string,其中[]之间的每个var都对应于存储在多维数组中的实际id。这是函数searchArray()的用武之地。基本上运行字符串,将[]替换为实际的id和字段的打印名称。当我一次性提交表格时,所有这一切都需要发生。

1 个答案:

答案 0 :(得分:1)

像这样的东西如何替代* preg_replace * ...

$arr = array('apple', 'pear', 'bananna', 'orange', 'grapefruit', 'pineapple');
$string='
<div class="row">
  <section> [1] </section>
  <section> [2] </section>
  <section> [5] </section>
</div>';

foreach($arr as $key => $value){
    $string = str_replace($key, $value, $string);
}

<强>更新

$arr = array(
    array('id'=>1, 'name'=>'matthew'),
    array('id'=>2, 'name'=>'william'),
    array('id'=>3, 'name'=>'john'),
    array('id'=>4, 'name'=>'george'),
    array('id'=>5, 'name'=>'henry'),
    array('id'=>6, 'name'=>'jason')
);
$string='
<div class="row">
  <section> [1] </section>
  <section> [2] </section>
  <section> [4] </section>
    <section> [1] </section>
</div>';
foreach($arr as $key => $subArr){
    $string = str_replace("[".$subArr['id']."]", $subArr['name'], $string);
}