如何替换字符串中的第N个匹配项(PHP)

时间:2015-06-23 12:06:58

标签: php algorithm

说,有一个数组:

array:4 [
  0 => "{__}"
  1 => "{one|two|three}"
  2 => "{__}"
  3 => "{red|green|blue}"
]

和文字:

> Lorem {__} dolor sit amet, consectetur {one|two|three} elit, sed do
> eiusmod tempor incididunt ut labore et dolore {__} aliqua. Ut enim ad
> minim veniam, quis nostrud exercitation ullamco laboris nisi ut
> aliquip ex ea commodo {one|two|three}. Duis {red|green|blue} irure
> dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
> nulla pariatur.

如何将所有 {__} 替换为<input type="text" name="text[n]" /> (n - 条目数)以及所有 {a | b | c |。 .. | N}

<select name="list[n]">
  <option value="1">a</option>
  <option value="2">b</option>
  <option value="3">c</option>
  <option value="4">...</option>
  <option value="N">N</option>
</select>

(n - 条目数)

1 个答案:

答案 0 :(得分:0)

你的算法应该是

1-从输入中读取字符串

2- $ Step2arr =使用'{__}'打破数组

对于我们从第一步获得的数组,运行foreach

$newstr = '' ;

foreach($Step2arr as $key=>$val){
    if( count($Step2arr) - 1 < $key )
    $newstr  = $newstr.$val.'<input type="text" name="text['.$key.']" /> ' ; 
}

4-现在新字符串有一些$ newstr字符串,如“Lorem

现在你可以为第二个{a | b | c}字符串重复相同的过程