陈奇网络工作室

火车头插件:在采集的文章头部、中部、尾部分别插入图片

编写一个火车头采集器的php采集插件,主要用于采集过程中在文章的首段后、中间、段尾前分别插入自定义图片:

<?php

class TrainHeadCollectorPlugin {

    private $image_url = "https://example.com/image.jpg";  // 自定义图片链接
    
    public function __construct() {
        add_filter('the_content', array($this, 'insert_images'));  // 注册过滤器,用于文章内容处理
    }

    public function insert_images($content) {

        $paragraphs = explode("</p>", $content);  // 将文章按照段落拆分
        $count = count($paragraphs);  // 获取段落数量

        if($count >= 3){  // 当段落数量大于等于3时,才进行图片插入

            // 在文章首段后插入图片
            $img_tag = '<img src="' . $this->image_url . '" />';
            $paragraphs[0] .= $img_tag;

            // 在文章中间点(第二个段落之后)插入图片
            $mid_index = ceil($count/2);  // 取中间段落的下标
            $paragraphs[$mid_index] .= $img_tag;

            // 在文章段尾前插入图片
            $last_index = $count - 1;  // 取最后一个段落的下标
            $paragraphs[$last_index] = $img_tag . $paragraphs[$last_index];

            // 拼接修改过的文章内容
            $content = implode("</p>", $paragraphs);
        }

        return $content;
    }

}

new TrainHeadCollectorPlugin();  // 实例化插件类

?>

编写一个火车头的php采集插件,主要用于采集过程中在文章的首段后、中间、段尾前各插入1张自定义图片:

<?php

class TrainHeadCollectorPlugin {

    private $image_urls = array(
        "https://example.com/image1.jpg",  // 自定义图片链接数组
        "https://example.com/image2.jpg",
        "https://example.com/image3.jpg"
    );
    
    public function __construct() {
        add_filter('the_content', array($this, 'insert_images'));  // 注册过滤器,用于文章内容处理
    }

    public function insert_images($content) {

        $paragraphs = explode("</p>", $content);  // 将文章按照段落拆分
        $count = count($paragraphs);  // 获取段落数量

        if($count >= 3){  // 当段落数量大于等于3时,才进行图片插入

            // 在文章首段后插入图片
            $img_tag = '<img src="' . $this->image_urls[0] . '" />';
            $paragraphs[0] .= $img_tag;
            array_splice($this->image_urls, 0, 1);  // 从图片链接数组中删除已使用的链接

            // 在文章中间点(第二个段落之后)插入图片
            $mid_index = ceil($count/2);  // 取中间段落的下标
            $img_tag = '<img src="' . $this->image_urls[0] . '" />';
            $paragraphs[$mid_index] .= $img_tag;
            array_splice($this->image_urls, 0, 1);  // 从图片链接数组中删除已使用的链接

            // 在文章段尾前插入图片
            $last_index = $count - 1;  // 取最后一个段落的下标
            $img_tag = '<img src="' . $this->image_urls[0] . '" />';
            $paragraphs[$last_index] = $img_tag . $paragraphs[$last_index];
            array_splice($this->image_urls, 0, 1);  // 从图片链接数组中删除已使用的链接

            // 拼接修改过的文章内容
            $content = implode("</p>", $paragraphs);
        }

        return $content;
    }

}

new TrainHeadCollectorPlugin();  // 实例化插件类

?>

用php代码写一个火车头采集器的插件,我希望实现在文章插入图片的功能,分别固定设置3张不同的图片,但是要求判断段落数量来确认插入图片位置,如果段落数小于3则不插入,如果段落数量大于3且小于5则只在全文中间段落的上方插入1张图片,如果段落数大于5则在文章的首段后、全文中间位置、结尾段落前自定义图片,其中变量:$content_tag_name 代表文章内容,代码如下:

function insert_images($content_tag_name) {
    $images = array("image1.jpg", "image2.jpg", "image3.jpg");
    $content = explode("</p>", $content_tag_name);
    $num_paras = count($content) - 1;

    // 如果段落数小于3,则不插入
    if($num_paras < 3) {
        return $content_tag_name;
    }

    // 如果段落数大于等于3且小于5,则在全文中间段落的上方插入1张图片
    if($num_paras < 5) {
        $mid_index = intval($num_paras / 2);
        $content[$mid_index] = '<img src="' . $images[0] . '" alt="">' . $content[$mid_index];
    }
    // 如果段落数大于等于5,则在文章的首段后、全文中间位置、结尾段落前插入图片
    else {
        $content[0] .= '<img src="' . $images[0] . '" alt="">';
        $mid_index = intval($num_paras / 2);
        $content[$mid_index] .= '<img src="' . $images[1] . '" alt="">';
        $last_index = $num_paras - 1;
        $content[$last_index] = '<img src="' . $images[2] . '" alt="">' . $content[$last_index];
    }

    // 重新组合文章内容并返回
    return implode("</p>", $content);
}

这个函数将文章内容作为参数传入,首先定义了一个包含三张图片文件名的数组 $images,然后根据段落数量判断插入图片的位置。如果段落数小于3,则不插入;如果段落数大于等于3且小于5,则在全文中间段落的上方插入1张图片;如果段落数大于等于5,则在文章的首段后、全文中间位置、结尾段落前插入图片。最后返回处理后的文章内容。

使用方法:

将上述代码放到火车头采集器的插件文件中,并根据需要调整 $images 数组中的图片文件名。在需要调用插件的地方,调用该函数并传入文章内容即可,如:

$content_tag_name = "这是文章内容";
$content_tag_name_with_images = insert_images($content_tag_name);
echo $content_tag_name_with_images;

这样就可以在文章中插入图片了。

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3