Php downloads the image address from the collected content and replaces the local address,
Get all the addresses in the string to an array. We use the preg_match_all function.
The Code is as follows:
<? Php
$ Str = '<p> </p> ';
$ Pattern = "/<[img | IMG]. *? Src = ['| "] (. *? (? : 2.16.gif |. jpg]) ['| "]. *? [/]?> /";
Preg_match_all ($ pattern, $ str, $ match); print_r ($ match );
?>
Result
Array
(
[0] => Array
(
[0] =>
)
[1] => Array
(
[0] => upfiles/2009/07/1246430143_1.jpg
)
)
With the core functions above, we can do the following.
The Code is as follows:
/**
* Obtain the image path in the replacement document.
* @ Param string $ xstr content
* @ Param string $ name of the photo file created by keyword
* @ Param string $ oriweb URL
* @ Return string
*
*/
Function replaceimg ($ xstr, $ keyword, $ oriweb ){
// Save path
$ D = date ('ymmd', time ());
$ Dirslsitss = '/var/www/weblist/uploads/'. $ keyword. '/'. $ d; // whether the category exists
If (www.111cn.net )(! Is_dir ($ dirslsitss )){
@ Mkdir ($ dirserver Load balancer, 0777 );
}
// Match the image's src
Preg_match_all ('# ] *> # I ', $ xstr, $ match );
Foreach ($ match [1] as $ imgurl ){
$ Imgurl = $ imgurl;
If (is_int (strpos ($ imgurl, 'HTTP '))){
$ Arcurl = $ imgurl;
} Else {
$ Arcurl = $ oriweb. $ imgurl;
}
$ Img = file_get_contents ($ arcurl );
If (! Empty ($ img )){
// Save the image to the server
$ Fileimgname = time (). "-". rand (, 9999). ". jpg ";
$ Filecachs = $ dirslsitss. "/". $ fileimgname;
$ Fanhuistr = file_put_contents ($ filecachs, $ img );
$ Saveimgfile = "/uploads/$ keyword". "/". $ d. "/". $ fileimgname;
$ Xstr = str_replace ($ imgurl, $ saveimgfile, $ xstr );
}
}
Return $ xstr;
}
From: http://www.111cn.net/phper/php-cy/48607.htm