>  기사  >  백엔드 개발  >  웹페이지 하이퍼링크 URL과 웹페이지의 이미지를 추출하는 PHP 정규 표현식

웹페이지 하이퍼링크 URL과 웹페이지의 이미지를 추출하는 PHP 정규 표현식

WBOY
WBOY원래의
2016-07-25 08:52:571462검색
  1. function match_links($document) {
  2. preg_match_all("'] ))[^>]*>?(.*?)'isx",$document,$links);
  3. while(list($key,$val) = 각각($links[2])) {
  4. if(!empty($val))
  5. $match['link'][] = $ val;
  6. }
  7. while(list($key,$val) = 각각($links[3])) {
  8. if(!empty($val))
  9. $match['link '][] = $val;
  10. }
  11. while(list($key,$val) = 각각($links[4])) {
  12. if(!empty($val))
  13. $match['content'][] = $val;
  14. }
  15. while(list($key,$val) = 각각($links[0])) {
  16. if(!empty( $val))
  17. $match['all'][] = $val;
  18. }
  19. $match 반환
  20. }
코드 복사

주로 규칙성에 문제가 있습니다. 다음은 더 많은 규칙성을 테스트하기 위한 asp.net의 예입니다. 페이지의 링크 규칙성을 가져옵니다.

  1. 공개 문자열 GetHref(string HtmlCode)
  2. {
  3. string MatchVale = ""
  4. string Reg = @"(h|H )(r|R)(e|E)(f|F) *= *('|"")?((w|\|/|.|:|-|_) )('|""| * |>)?";
  5. foreach(Regex.Matches(HtmlCode, Reg)에서 m 일치)
  6. {
  7. MatchVale = (m.Value).ToLower().Replace("href=", "").Trim() "||";
  8. }
  9. return MatchVale;
  10. }
코드 복사

예제 2, php 정규식을 통해 콘텐츠의 원격 이미지를 다운로드하기 위한 함수 코드

PHP 정규식을 사용하여 콘텐츠의 이미지를 결정하고 이 도메인 이름에 속하지 않는 이미지를 다운로드하고 저장하는 프로그램입니다. 이 프로그램은 실제로 "도둑 프로그램"의 중요한 부분입니다.

프로그램의 이 섹션은 원격 이미지를 다운로드하는 섹션입니다.

  1. if (preg_match_all("/http://[^ "'] [.jpg|.gif|.jpeg|.png] /ui", Stripcslashes($content),$aliurl)){
  2. $i=0; //여러 파일
  3. while(list($key ,$v) = Each($aliurl[0])){
  4. //echo $v."
    ";
  5. $filetype = pathinfo($v, PATHINFO_EXTENSION); //접미사 이름 가져오기
  6. $ff = @file_get_contents($v); 바이너리 파일 콘텐츠 가져오기
  7. if(!stripos($v,"jbxue.com")){//자신의 웹사이트에서 가져온 이미지인지 확인
  8. if (!empty($ff)){ / / 파일을 구한 후 다음 작업을 수행합니다
  9. $dir = "upload/".date("Ymd")."/";//새 저장 경로 지정
  10. if (!file_exists($dir) ){ //디렉터리 존재 여부 확인
  11. @mkdir($dir,511,true); //다단계 디렉터리 생성, 10진수로 변환한 511은 실행 권한이 있는 777입니다
  12. } //bbs.it -home.org
  13. $nfn = $dir.date("Ymdhis").$i.".".$filetype; //빌드 파일의 새 이름
  14. $nf = @fopen($nfn," w"); //파일 생성
  15. fwrite($nf,$ff); //파일 쓰기
  16. fclose($nf); //파일 닫기
  17. $i; //여러 파일
  18. echo "< ;img src="".$nfn."">";
  19. $content = str_replace($v,$nfn, $content);//콘텐츠의 매개변수 바꾸기
  20. }else{/ /Get 사진을 사용할 수 없는 경우 기본 사진으로 교체하세요
  21. $content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//컨텐츠의 매개변수 교체
  22. }
  23. }
  24. }
  25. }
코드 복사

예제 3, PHP는 정규 표현식을 통해 이미지를 로컬로 다운로드합니다.

  1. /*

  2. 부족: 웹페이지의 이미지 경로가 절대 경로, 크롤링할 수 없음
  3. */
  4. set_time_limit(0);//크롤링은 시간에 의해 제한되지 않습니다

  5. $URL='http://pp.baidu .com/ ';//모든 URL

  6. get_pic($URL);

  7. function get_pic($pic_url) {

  8. // 사진 바이너리 스트림 가져오기
  9. $data=CurlGet($pic_url);
  10. /*정규 표현식을 사용하여 이미지 링크 가져오기*/
  11. $pattern_src = '/<[img|IMG].*?src =[' |"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/'
  12. $num = preg_match_all($pattern_src, $data, $match_src);
  13. $arr_src=$match_src[1];//이미지 배열 가져오기
  14. get_name($arr_src);

  15. echo "< br>완료!";

  16. return 0;
  17. }

  18. /*이미지 유형을 가져와 파일과 동일한 디렉터리에 저장합니다*/

  19. function get_name( $pic_arr)
  20. {
  21. //사진 유형
  22. $pattern_type = '/(/.(jpg|bmp|jpeg|gif|png))/';

  23. foreach($pic_arr as $pic_item){//각 사진의 주소를 가져오는 루프

  24. $num = preg_match_all($pattern_type, $pic_item, $match_type)
  25. $pic_name = get_unique ().$match_type [1][0];//마이크로초 타임스탬프 이름 변경
  26. //스트림 형식으로 사진 저장
  27. $write_fd = @fopen($pic_name,"wb");
  28. @fwrite( $write_fd, CurlGet($pic_item));
  29. @fclose($write_fd);
  30. echo "[OK]..!"
  31. }
  32. return 0; 🎜>}
  33. //마이크로초 시간을 통해 고유 ID 가져오기

  34. function get_unique(){
  35. list($msec, $sec) =explore(" ",microtime ());
  36. return $sec.intval($msec*1000000);
  37. }

  38. //웹 콘텐츠 캡처

  39. function CurlGet($url){
  40. $url =str_replace('&','&',$url);
  41. $curl = curl_init()
  42. curl_setopt($curl, CURLOPT_URL, $url); 컬, CURLOPT_HEADER, false );

  43. //curl_setopt($curl, CURLOPT_REFERER,$url)

  44. curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0(호환; MSIE 6.0; SeaPort/1.2 ; Windows NT 5.1; InfoPath.2)");
  45. curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
  46. curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt ');
  47. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  48. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0)
  49. $values ​​​​= curl_exec($curl); );
  50. $ 값 반환;
  51. }
  52. ?

  53. 코드 복사
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.