php显示文章内容,php类 在文章内容中获取图片链接

/**

* @Author: Eric-枫

* @Date: 2019-08-29 10:33:28

* @Last Modified by: Eric-枫

* @Last Modified time: 2019-09-27 17:04:10

*/

namespace zf;

class GetImgSrc{

/**

* 提取HTML文章中的图片地址

* @param string $data

* @param int $num 第 $num 个图片的src,默认为第一张

* @param string $order 顺取倒取; 默认为 asc ,从正方向计数。 desc 从反方向计数

* @param string|array $blacklist 图片地址黑名单,排除图片地址中包含该数据的地址;例如 传入 baidu.com 会排除 src="http://www.baidu.com/img/a.png"

* @param string $model 默认为字符串模式;可取值 string preg;string模式处理效率高,PHP版本越高速度越快,可比正则快几倍

* @return false | null | src 当data为空时返回 false , src不存在时返回 null ,反之返回src

*/

public static function src($data = null, $num = 1, $order = 'asc', $blacklist = false, $model = 'string'){

if(isset($data)){

if($model === 'preg'){

$imgSrc = self::pregModel($data, $num-1, $order);

}else{

$imgSrc = self::strModel($data, $num, $order);

}

if($blacklist === false){

return $imgSrc;

}else{

if(is_array($blacklist)){

foreach($blacklist as $value){

if(strpos($imgSrc, $value) !== false){

return self::src($data, $num+1, $order, $blacklist, $model);

};

}

return $imgSrc;

}else{

if(strpos($imgSrc, $blacklist) === false){

return $imgSrc;

}else{

return self::src($data, $num+1, $order, $blacklist, $model);

}

}

}

}else{

return false;

}

}

public static function strModel($str, $num, $order){

$topStr = null;

if($order != 'asc'){

$funcStr = 'strrpos';

}else{

$funcStr = 'strpos';

}

for($i=1; $i<=$num; $i++){

$firstNum = $funcStr($str, '

if($firstNum !== false){

if($order != 'asc'){

$topStr = $str;

$str = substr($str, 0, $firstNum);

}else{

$str = substr($str, $firstNum+4);

}

}else{

return null;

}

}

$str = $order=='asc'?$str:$topStr;

$firstNum1 = $funcStr($str, 'src=');

$type = substr($str, $firstNum1+4, 1);

$str2 = substr($str, $firstNum1+5);

if($type == '\''){

$position = strpos($str2, "'");

}else{

$position = strpos($str2, '"');

}

$imgPath = substr($str2, 0, $position);

return $imgPath;

}

public static function pregModel($str, $num, $order){

preg_match_all("//isU", $str, $ereg);

$img = $ereg[0];

if($order != 'asc'){

$img = array_reverse($img);

};

if(!empty($img[$num])){

$imgStr = $img[$num];

$pregModel = "/src=('|\")(.*)('|\")/isU";

preg_match_all($pregModel, $imgStr, $img1);

return $img1[2][0];

}else{

return null;

}

}

}

/*

$str = '

这里是普通文字

这里是干扰元素测试"""

src1.png

src2.png

src3.jpg

';

$src = GetImgSrc::src($str, 1);

*/

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值