Php regular expression matches the remote image address in the article and downloads the image to the local device. Today, a simple collection program needs to download the content of the website of the other party, and then store the images in the content on the local server, next, I will introduce to you how to download the content of the website of the other party in a simple collection program today, and then store the images in the content on the local server, next, I will introduce you to the specific operation method. the file_get_contents function is used to download images. the specific method is as follows.
Here we use the php regular expression to implement:
The code is as follows: |
|
$ Content = 'here is the content of the article. insert an image here for testing '; $ Content = stripslashes ($ content ); $ Img_array = array (); // Match all remote images Preg_match_all ("/(src | SRC) = [" | '|] {0,} (http ://(. *). (gif | jpg | jpeg | bmp | png)/isU ", $ content, $ img_array ); // Matched non-repeated images $ Img_array = array_unique ($ img_array [2]); Print_r ($ img_array ); |
The above will match the remote image, and we need to keep it locally. Note the following two points:
1. image storage path (image storage directory)
2. actually accessing the image address
The following is a complete example: (you can save it to the local server and modify the corresponding places for testing)
The code is as follows: |
|
Php saves the remote image to the local device. The php regular expression matches the image address in the article.
// Save the remote image in the article to the local device // Author: yanue; // Save the directory path of the file (replace it with your own path. you can echo it) $ Save_path = $ _ SERVER ['document _ root']. 'swfupload/attached /'; // File Save Directory URL $ Save_url = '/swfupload/attached /'; $ Save_path = realpath ($ save_path ).'/'; // Image storage directory $ ImgPath = $ save_path. date ("Ymd "); $ ImgUrl = $ save_url. date ("Ymd ");
// Create a folder If (! Is_dir ($ imgPath )){ @ Mkdir ($ imgPath, 0777 ); } $ Content = 'here is the content of the article. insert an image here for testing '; $ Content = stripslashes ($ content ); $ Img_array = array (); // Match all remote images Preg_match_all ("/(src | SRC) = [" | '|] {0,} (http ://(. *). (gif | jpg | jpeg | bmp | png)/isU ", $ content, $ img_array ); // Matched non-repeated images $ Img_array = array_unique ($ img_array [2]); Print_r ($ img_array ); // Unlimited time Set_time_limit (0 ); Foreach ($ img_array as $ key => $ value ){ $ Value = trim ($ value ); // Read remote images $ Get_file = @ file_get_contents ($ value ); // Save it to the local image name $ Imgname = date ("YmdHis"). '_'. rand (10000,999 99). ".". substr ($ value,-3, 3 ); // The actual file address (including the path and name) saved locally) $ FileName = $ imgPath. '/'. $ imgname; // Actual access address $ Fileurl = $ imgUrl. "/". $ imgname; // File writing If ($ get_file ){ $ Fp = @ fopen ($ fileName, "w "); @ Fwrite ($ fp, $ get_file ); @ Fclose ($ fp ); } // Replace the original image address $ Content = ereg_replace ($ value, $ fileurl, $ content ); } Echo $ content; ?>
|
...