我正在尝试更改文本中的特定单词。
只需“ [img]” bbcode就会回显画廊代码。
一切正常,但是foreach循环仅返回点火图像。
这是我的代码:
if(strpos($news['contenu'], '[img]')) {
// Cherche les occurences
preg_match_all('`\[img](.*)\[/img]`U', $news['contenu'], $resultat, PREG_PATTERN_ORDER);
foreach($resultat[1] as $nb_image)
{
$image = file_get_contents('V:/WP/BDC/uploads/'.$nb_image.'');
$image_codes = base64_encode($image);
$debut_image = '<image src="data:image/jpg;charset=utf-8;base64,';
$fin_image = '" alt="$1"/>';
$news = preg_replace('#\[img\](.+)\[\/img\]#iUs', $debut_image . $image_codes . $fin_image, $news);
}
}
数组返回(单独):
为什么我的foreach循环(preg_replace)仅显示第一张图像?
感谢帮助:)
答案 0 :(得分:0)
实际上,您是在循环的第一次迭代期间替换所有[img]...[/img]
标签,因此在下一次迭代开始时没有任何替换内容。
您可以将count
的{{1}}参数用作:
个 如果指定,此变量将填充已完成的替换次数。
所以您的替换项变为:
preg_replace