我有一个这样的字符串:
$replace = "I am a [[boy]], he is a[[boy]] too."
我想要做的是将第一个[[boy]]
替换为" Blank1"第二个[[boy]]
和" Blank2"。
我尝试过:
for($i=1;$i<=count($questions[$qn_count]['correct_ans']);$i++){
$word = "##BLK".$i."##";
$pattern_bracket = "/\[\[([^\]]+)\]\]/";
$ff = preg_replace($pattern_bracket,$word , $replace, $i);
}
$questions[$qn_count]['body'] = $ff;
以上[[ ]]
似乎总是与## BLK2 ##相同。
我有可能更换两个支架会有不同的值吗?
答案 0 :(得分:0)
您的问题在细节上有点模糊,但我认为这是您正在寻找的一般方法:
代码:(Demo)
$string="I am a [[boy]], he is a[[boy]] too.";
$swaps=['Blank1','Blank2'];
echo "$string\n";
foreach($swaps as $swap){
$string=preg_replace('/\[{2}[^]]+\]{2}/',$swap,$string,1);
echo "$string\n";
}
输出:
I am a [[boy]], he is a[[boy]] too.
I am a Blank1, he is a[[boy]] too.
I am a Blank1, he is aBlank2 too.
只是几个笔记:
{2}
将比重复的等效字符更有效。1
作为preg_replace()
的第四个参数,而不是变量。