YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

정규식을 이용한 이미지 링크 추출

페이지 정보

작성자 MintState 댓글 0건 조회 30,493회 작성일 08-11-10 13:28

본문

정규식을 이용한 이미지 링크 추출

아래와 같은 본문이 있을시 여기서 이미지나 링크만 추출 하여 보자.
$str = "<a name='top'></a>
<img src='http://xxxx.com/a.gif' border='0' alt=''>
<img src='http://xxxx.com/b.png' border='0' alt=''>
<a href='http://xxxx.com/gogo.html?no=2' target='_blank'><img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''></a>";


여러가지 방법이 있겠지만
1번째.
// a 링크만 추출하기
preg_match_all("|<a[^>]+>(.*)</a>|U",stripslashes($str),$out1, PREG_PATTERN_ORDER); 
preg_match_all("|<a[^>]+>.*</a>|U",stripslashes($str),$out2, PREG_PATTERN_ORDER); 
preg_match_all("^<a.*<\/a>^U", stripslashes($str), $out3);

// http 로 시작하는 것만추출
preg_match_all("((http)://[a-z0-9-]+.[][a-zA-Z0-9:&#@=_~%;?/.+-]+)",stripslashes($str),$out4, PREG_PATTERN_ORDER); 

// 이미지만 추출
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", stripslashes($str), $out5);

print_r ($out1);
print_r ($out2);
print_r ($out3);
print_r ($out4);
print_r ($out5);


결과 값
Array
(
    [0] => Array
        (
            [0] => <a name='top'></a>
            [1] => <a href='http://xxxx.com/gogo.html?no=2' target='_blank'><img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''></a>
        )

    [1] => Array
        (
            [0] => 
            [1] => <img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''>
        )

)
Array
(
    [0] => Array
        (
            [0] => <a name='top'></a>
            [1] => <a href='http://xxxx.com/gogo.html?no=2' target='_blank'><img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''></a>
        )

)
Array
(
    [0] => Array
        (
            [0] => <a name='top'></a>
            [1] => <a href='http://xxxx.com/gogo.html?no=2' target='_blank'><img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''></a>
        )

)
Array
(
    [0] => Array
        (
            [0] => http://xxxx.com/a.gif
            [1] => http://xxxx.com/b.png
            [2] => http://xxxx.com/gogo.html?no=2
            [3] => http://xxxx.com/gif.php?no=5368753
        )

    [1] => Array
        (
            [0] => http
            [1] => http
            [2] => http
            [3] => http
        )

)
Array
(
    [0] => Array
        (
            [0] => <img src='http://xxxx.com/a.gif' border='0' alt=''>
            [1] => <img src='http://xxxx.com/b.png' border='0' alt=''>
            [2] => <img src='http://xxxx.com/gif.php?no=5368753' border='0' alt=''>
        )

    [1] => Array
        (
            [0] => http://xxxx.com/a.gif
            [1] => http://xxxx.com/b.png
            [2] => http://xxxx.com/gif.php?no=5368753
        )

)


2번째.
처음 나온는 이미지 추출(jpg,gif,png)
$photo = getImg($str);
print_r ($photo);
function getImg($content) {
	$img = "";
	preg_match("<img [^<>]*>", $content, $imgTag);
	
	if($imgTag[0]){ 
		if( stristr($imgTag[0], "http://") ) {
			preg_match("/http:\/\/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[0], $imgName);
			$img = $imgName[0];
		} else {
			preg_match("/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[0], $imgName);
			$img = $imgName[0];
		}
	}
	/*
	if($imgTag) {
		if( stristr($imgTag[2], "http://") ) {
			preg_match("/http:\/\/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[2], $imgName);
			$img = $imgName[0];
		} else {
			preg_match("/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[2], $imgName);
			$img = $imgName[0];
		}
	}
	*/
	return $img;
}


결과 값
http://xxxx.com/a.gif

3. 세번째.
특정 웹페이지를 읽어 그 페이지에 있는 이미지 추출
<?php
$startPage  = "1";      // 시작 페이지
$endPage    = "2";     // 마지막 페이지

for($i=$startPage; $endPage+1 > $i;$i++)
{
	$data           = "";   // 초기화
	$datafile       = "http://xxxx.com/photo.html?page=$i"; // 리스트 페이지
	$fp             = @fopen($datafile, "r");
	while (!feof ($fp))
	{
		$data .= fgets($fp);
	}
	fclose($fp);

	preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$data, $matches);

	foreach($matches as $key => $value)
	{
		foreach($value as $key_2 => $value_2)
		{
			//$value_2 =  ereg_replace(".thumb","",$value_2);
			//$value_2 =  ereg_replace("img src=","",$value_2);
			echo $value_2."<br />";
		}
		break;
	}
}
?> 

댓글목록

등록된 댓글이 없습니다.

Total 165건 3 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
115 MintState 14482 11-10
114 MintState 16145 11-10
113 MintState 17074 11-10
112 MintState 21213 11-10
111 MintState 12440 11-10
열람중 MintState 30494 11-10
109 MintState 15797 11-10
108 MintState 14646 11-10
107 MintState 14535 11-10
106 MintState 12573 11-10
105 MintState 20770 11-10
104 MintState 12956 11-10
103 MintState 12812 11-10
102 MintState 19960 11-10
101 MintState 11414 11-10
100 MintState 12504 11-10
99 MintState 20255 11-10
98 MintState 14279 11-10
97 MintState 12892 11-10
96 MintState 11362 11-10
95 MintState 13277 11-10
94 MintState 11851 11-03
93 MintState 11297 11-03
92 MintState 12498 11-03
91 MintState 15507 11-03
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™