// PHP正则提取字符串中所有图片,并替换!
function upimgurl($value,$url){
$imgList = getPatternMatchImages($value);
if (empty($imgList)){
return $value;
}
// 数组去重
// $imgList = array_unique($imgList);
// $newImgList = [];
// foreach ($imgList as $key=>$img_url){
// // 更新内容,可以switch判断更改
// $newImgList[] = $url.$img_url;
// }
// print_r($imgList);die;
for($i=0;$i<count($imgList);$i++){
$domain = strstr($imgList[$i], '//');
if($domain){
$httpsstr = strstr($imgList[$i], 'http');
if($httpsstr){
$domainurl = $imgList[$i];
}else{
$domainurl = "https:".$imgList[$i];
}
}else{
$domainurl = $url.$imgList[$i];
}
// print_r($domainurl);die;
// print_r($value);
$new_file = lx_downloadAndSaveFile($domainurl,strrchr($imgList[$i],'.'));
if($new_file){
$value = str_replace($imgList[$i],$new_file,$value);
}
}
// print_r($value);die;
return $value;
}
// 匹配出所有的 <img> 标签的 src属性
function getPatternMatchImages($contentStr = ""){
$imgSrcArr = [];
//首先将富文本字符串中的 img 标签进行匹配
$pattern_imgTag = '/<img\b.*?(?:\>|\/>)/i';
preg_match_all($pattern_imgTag,$contentStr,$matchIMG);
if (isset($matchIMG[0])){
foreach ($matchIMG[0] as $key => $imgTag){
//进一步提取 img标签中的 src属性信息
$pattern_src = '/\bsrc\b\s*=\s*[\'\"]?([^\'\"]*)[\'\"]?/i';
preg_match_all($pattern_src,$imgTag,$matchSrc);
if (isset($matchSrc[1])){
foreach ($matchSrc[1] as $src){
//将匹配到的src信息压入数组
$imgSrcArr[] = $src;
}
}
}
}
//$pattern= '/<img\b.+\bsrc\b\s*=\s*[\'\"]([^\'\"]*)[\'\"]/iU';
return $imgSrcArr;
}
// 图片下载到本地
function lx_downloadAndSaveFile($name, $ext, $tried_count=0){
if($tried_count>2) return;
$file = file_get_contents($name);
// print_r($file);die;
if($file){
// $url = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
// $url .= "://" . $_SERVER['HTTP_HOST'];
// echo "当前URL为:" . $url;die;
// print_r($ext);
$path = '/wp-content/uploads/'.date('Y/m').'/'.lx_randFileName($ext);
// print_r($path);
// print_r($ext);die;
file_put_contents('.'.$path, $file);
//file_put_contents('/tmp/log1.txt',UPLOAD_IMG_PATH.$path);
return $path;
}else{
sleep(3);
return lx_downloadAndSaveFile($name, $ext, ++$tried_count);
}
}
function lx_randFileName($ext){
if($ext == '.jpeg' || $ext == '.webp'){
return date('YmdHis').floor(rand(10000,99999)).'.'.substr(trim($ext),-4);
}else{
return date('YmdHis').floor(rand(10000,99999)).'.'.substr(trim($ext),-3);
}
}
$content = upimgurl($post_content,'https://www.ceshi.com');
print_r($content);
PHP正则提取字符串中所有图片链接,并下载到本地且替换图片地址!
最新推荐文章于 2024-07-07 18:26:58 发布