$str = '1[t]2[t]3[t]4[t]5';
$arr = array('a','b','c','d');
preg_replace('/\[t]}/',$arr,$str);上面这个执行不了,请问应该怎么样才可以正确的执行?
$str中的每个[t]对应$arr中的每个索引值最好能不用循环

解决方案 »

  1.   


    $pattern = array(
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
    );
    $result = preg_replace($pattern,$arr,$str);
      

  2.   

    $str = '1[t]2[t]3[t]4[t]5';
    中的[t]是不定的,可能是4个,也可能是2个但不管$str中的[t]有几个
    $arr始终是与$str中的[t]个数一样
      

  3.   

    $pattern = array(
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
        '@(\[t\])@',
    );
    $result = preg_replace($pattern,$arr,$str);
      

  4.   

    为什么不自己先试试,就知道不行了。<?php
    $str = '1[t]2[t]3[t]4[t]5';
    $arr = array('a','b','c','d');
    $num = count($arr);
    while($num--)
    {
    $pattern[] = ('/(?<=\[)t(?=\])/');
    }
    $str = preg_replace($pattern,$arr,$str, 1);
    var_dump($str);
      

  5.   

    $str = '1[t]2[t]3[t]4[t]5';
    $arr = array('a','b','c','d');
    $i=0;
    echo preg_replace('/\[t\]/e','$arr[$i++]',$str);
      

  6.   

    也可以这样$str = '1[t]2[t]3[t]4[t]5';
    $arr = array('a','b','c','d');
    $p = array_fill(0, count($arr), '/\[t\]/');
    echo preg_replace($p, $arr, $str, 1);