编写一个火车头采集器的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;
这样就可以在文章中插入图片了。