总体思路是这样的:
```php <?php // 假设这是你的HTML内容 $htmlContent = <<<HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <p>这是第一段。</p> <p>这是第二段。</p> <p>这是第三段。</p> <p>这是第四段。</p> <p>这是第五段。</p> </body> </html> HTML;
// 将HTML内容按<p>标签分割 $paragraphs = explode('</p>', $htmlContent);
// 假设这是给定的图片URL $images = [ 'http://example.com/image1.jpg', 'http://example.com/image2.jpg', 'http://example.com/image3.jpg', 'http://example.com/image4.jpg' ];
// 计算段落数量 $paragraphCount = count($paragraphs);
// 计算图片数量 $imageCount = count($images);
// 插入图片 for ($i = 0; $i < $imageCount; $i++) { // 计算插入位置 $insertIndex = floor(($paragraphCount - 1) * ($i / ($imageCount - 1))); // 插入图片 $paragraphs[$insertIndex] .= '<img src="' . $images[$i] . '" alt="Image" />'; // 如果不是最后一张图片,添加一个新的段落 if ($i < $imageCount - 1) { $paragraphs[$insertIndex] .= '</p><p>'; } }
// 重新组合HTML内容,并添加最后一个</p>标签 $newHtmlContent = implode('</p>', $paragraphs) . '</p>';
// 输出新的HTML内容 echo $newHtmlContent; ?> ```
这段代码首先计算段落数量和图片数量。然后,它使用一个循环来遍历每张图片,并计算每张图片应该插入的位置。插入位置是通过将段落数量减1,然后乘以当前图片索引除以图片总数减1来计算的,这样可以将图片均匀地分散到段落中。
在循环中,每张图片被插入到计算出的位置,并且在图片后面添加一个新的 `<p>` 标签,除非它是最后一张图片。
最后,使用 `implode` 函数将修改后的段落数组重新组合成HTML内容,并输出。
这种方法可以处理任意数量的图片(只要不超过段落数量),并且能够将图片均匀地分散到段落中。
|