问:只在标题跟第一段之间插入图片还比较简单,如何在文章内容里面插入多个图片呢?
回答:先看教程
[织梦集成教程](%E7%BB%87%E6%A2%A6%E9%9B%86%E6%88%90%E6%95%99%E7%A8%8B.md)
[帝国集成教程](%E5%B8%9D%E5%9B%BD%E9%9B%86%E6%88%90%E6%95%99%E7%A8%8B.md)
[zBlog集成教程](zBlog%E9%9B%86%E6%88%90%E6%95%99%E7%A8%8B.md)
[WordPress集成](WordPress%E9%9B%86%E6%88%90.md)
> 这个需要一点编程基础,思路大体如下:
> 1、 分析内容的结构,找出h2 或者p 段落
> 2、在h2 之后或者 p段落之前,插入码迷图床图片
## 代码伪程序示例1
程序依赖:https://github.com/Imangazaliev/DiDOM
~~~
use DiDom\Document;
use DiDom\Element;
$document = new Document();
$document->loadHtml($文章内容);
#查找所有p标签
$hgroups = $document->find('p');
foreach ($hgroups as $hk => $hgroup) {
$len = mb_strlen($hgroup->text());
# 如果段落文字够长,每三段插入一张图片
if ($len > 30 && $hk % 3 == 2) {
$item = new Element('img', '', ['src' => "https://图床地址/标题_".$hk.".jpg" ]);
$hgroup->appendChild($item);
}
}
$html = $document->html();
$html = str_replace('<html><body>', '', str_replace('</body></html>', '', $html));
~~~
## 代码伪程序示例2
```
~~~
/***
* 自动配图
* @use $html = insertImgs($html,$title,"http://gen.mamioo.com/test/600/",3);
* @param $html 文章内容
* @param $title 文章标题
* @param $tuchuang_url 图床路径
* @param $num 图片数量
* @return string|string[]
*/
function insertImgs($html, $title, $tuchuang_url, $num = 3) {
$split_tag = "</p>";
$html = str_replace("<br />", "<br>", $html);
$html = str_replace("<br/>", "<br>", $html);
$htmlarr = preg_split("%$split_tag%ui", $html);
$p_num = count($htmlarr);
if ($p_num < $num * 3) {
$split_tag = "<br>";
$htmlarr = preg_split("%$split_tag%ui", $html);
}
$p_num = count($htmlarr);
$p_inter = floor($p_num / $num);
$imgarr = preg_split("%<img%ui", $html);
$img_num = count($imgarr);
$html_out = [
'<p style="text-align:center"><img src="' . $tuchuang_url . $title . '__.jpg"/></p>',
];
if ($p_inter > 1 && $num > 1) {
foreach ($htmlarr as $i => $item) {
if (($i + 1) % $p_inter == 0 && $img_num < $num) {
$img_num++;
$html_out[] = '<p style="text-align:center"><img src="' . $tuchuang_url . $title . '__' . $i . '.jpg"/></p>';
} else {
$html_out[] = $item;
}
}
}else{
$split_tag = "";
$html_out[] = $html;
}
$html = str_replace("</p></p>", "</p>", implode($split_tag, $html_out));
return $html;
}
~~~
```