php 实现从其他网站拷贝的富文本内容并将里面的图片抓取到本地

<span style="white-space:pre">	</span>function getImgByReg($str)
	{
		$list = array();
		$c1 = preg_match_all('/<img\s.*?>/', $str, $m1);
		for($i = 0; $i < $c1; $i++) {
			$c2 = preg_match_all('/(\w+)\s*=\s*(?:(?:(["\'])(.*?)(?=\2))|([^\/\s]*))/', $m1[0][$i], $m2); 
			for($j = 0; $j < $c2; $j++) {
				$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j] : $m2[3][$j];
			}
		}
	
		return $list;
	}
<span style="white-space:pre">	</span>function replaceImg($list, $url)
	{
	    $newImgTags = array();
	    $newImgUrls = array();
	    
	    foreach ($list as $key => $val) {
	    	$imgTag = '<img ';
	    	foreach ($val as $attr => $v) {
	    		if ($attr === 'src') {
	    			$imgTag .= $attr . '="' . $url . $v . '" ';
	    			$newImgUrls[] = $url . $v;
	    		} else {
	    			$imgTag .= $attr . '="' . $v . '" ';
	    		}
	    	}
	    	$imgTag .= ' >';
	    
	    	$newImgTags[$key] = $imgTag;
	    }
	    
	    return array('newImgTags' => $newImgTags, 'newImgUrls' => $newImgUrls);
	}

// 模拟使用

//你想要保存图片的目录
$dist = '/User/www/img/' . date('/Y/m/d');
!is_dir($dist) && mkdir($dist, 0777, true);

define('<span style="font-family: Arial, Helvetica, sans-serif;">URLHOLDER', </span><span style="font-family: Arial, Helvetica, sans-serif;">'{{urlholer}}');</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span>// 你的图片服务器或目录地址
$url = URLHOLDER . '/img/' . date('/Y/m/');

<p class="p1"><span class="s1">// 这是模拟你需要替换的用户提交的富文本内容 里面包含图片地址</span></p><p class="p1"><span class="s1">$content = </span>'<p>Push&nbsp;Pop&nbsp;Pressè?´å??äº?å??é€ ä¸€ä¸ªé€¼ç??ç??ã€?充满物ç??æ??å<img class="mm" src="http://cms.csdnimg.cn/article/201406/04/538edd87c1b25.jpg">º”ç??体éª?ã€?POPå°±æ?¯å?¨è¿?个ç??念ä¸?å?¬ç”?å?ºæ?¥ç??新一代æ??æ??ã€?</p><p>POP使用Objective-C++ç¼–å??ã€?Objective-C++æ?¯å¯¹C++ç??扩å±?ï¼?å°±å??Objective-Cæ?¯Cç??扩å±?ä¸€æ ·ã€?è€?è?³äº?为什ä¹?他们用Objective-C++è€?ä¸?æ?¯çº¯ç²¹ç??Objective-Cï¼?å??å? å?¨äº?他们æ?´å–?欢Objective-C++ç??语æ³?特性所æ??ä¾?ç??便å?©ã€?</p><p><strong>POPç??æ?¶æ??</strong></p><p>POPç?®å‰?ç”±å??个é?¨å??ç»?æ??ï¼?å¦?å?¾1所示)ï¼?å?³Animationsã€?Engineã€?Utilityã€?WebCoreã€?</p><p>å?¾1 &nbsp;POPæ?¶æ??å?¾</p><p><img src="http://cms.csdnimg.cn/article/201406/04/538edd54d9240.jpg" />POPå?¨ç”»æ??为æµ?ç?…ï¼?å…¶ç§?å¯?å°±å?¨äº?è¿?个å¼?æ“?中ç??POPAnimatorã€?POPé€?è¿?CADisplayLink让å?¨ç”»å®?ç?°äº?60&nbsp;FPSç??æµ?ç?…æ??æ??ï¼?æ‰“é€ äº?一个游æ??级ç??å?¨ç”»å¼?æ“?ã€?</p><p>CADisplayLinkæ?¯ç±»ä¼¼NSTimerç??å®?æ—¶å?¨ï¼?ä¸?å??ä¹?å¤?å?¨äº?ï¼?NSTimer用äº?æ?‘们å®?义任å?¡ç??执</p>'<span class="s1">;</span></p>	    
$res = saveImgFromList($content, $dist, $url);
$param = array();

// 你想要的内容
$param['content'] = $res['content'];
// 内容里面图片url组成的数组
$param['image_urls'] = $res['image_urls'];

这时你的内容就可以入库了

php 实现从其他网站拷贝的富文本内容并将里面的图片抓取到本地,布布扣,bubuko.com

php 实现从其他网站拷贝的富文本内容并将里面的图片抓取到本地

上一篇:安装LAMP PHP的./configure 参数,未出现MYSQ


下一篇:MSDN Webcast 系列课程