>  기사  >  백엔드 개발  >  PHP를 사용하여 CSS 이미지 코드를 캡처하는 방법에 대한 자세한 설명

PHP를 사용하여 CSS 이미지 코드를 캡처하는 방법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-17 15:22:081565검색

1. CSS에서 이미지 캡처:
> 1. 먼저 준비를 수행합니다.
> 첫 번째 단계는 CSS의 원래 경로를 $url 변수에 저장하는 것입니다. abc.css에 있습니다.
> 여러 CSS 파일이 자주 발견되는 점을 고려하여 Xiaoxie는 CSS 경로를 직접 입력하지 않았습니다.
> 대신 여러 CSS 파일의 내용을 병합하여 모두 abc.css 파일에 넣습니다.

$data = file_get_contents('abc.css')

> 그런 다음 CSS 파일의 내용을 $data 변수로 읽은 다음 정규식을 사용하여 도메인 이름을 추출합니다.
> 많은 이미지 파일이 /img/1.gif 및 img/1.gif와 같은 상대 루트 경로를 사용한다고 간주되기 때문입니다.
> 그러면 CSS의 원래 주소는 http://www.jb51.net/css/이므로 위 두 파일의 위치가 다릅니다.

> 첫 번째 파일은 경로가 상대 루트 경로를 사용하기 때문에 /upload/201109/20110926143903807.gif에 있습니다.
> 두 번째는 /upload/201109/20110926143903169.gif에 있으며 해당 경로는 일반적인 상대 경로입니다.

2. 이미지 저장 폴더 만들기:
> 여기에서 is_dir을 사용하여 폴더가 존재하는지 확인합니다.
> ㅎㅎ 그런데 is_file 함수를 사용하면 이 파일이 일반 파일인지, 존재하는지 확인할 수 있습니다.
> 하지만 file_exists()가 조금 더 우수합니다. Webmasterworld.com에서 누군가 이에 대해 논의하는 것을 본 적이 있기 때문입니다.

if (!is_dir('img')) { mkdir('img') }

> 3. 정규식을 사용하여 이미지의 상대 주소를 가져옵니다.

$regex = '/url('{ 0, 1}"{0,1}(.*?)'{0,1}"{0,1})/';
//여기서는 이미지 주소를 일치시키기 위해 정규식을 사용합니다. 즉, url( 1.gif) url('1.gif') url("1.gif")이 고려됩니다.
//이 세 가지 쓰기 방법을 모두 사용할 수 있으므로 위의 일반적인 규칙을 사용하여 안에 있는 1.gif를 꺼냅니다.
//'{0,1}은 작은따옴표가 1번 또는 0번 나타날 수 있음을 의미하고, "는 큰따옴표가 1번 또는 0번 나타날 수 있음을 의미합니다.
//지연 일치를 중간에 사용해야 하며, 그렇지 않으면 결과는 1입니다. .gif " 1.gif 새 대신 O(∩_∩)P.
preg_match_all($regex,$data,$result);

> 4. 다음 그림을 처리합니다.

> 먼저 루프를 사용하여 정규식을 사용하여 추출된 첫 번째 분기 콘텐츠 배열을 처리합니다.
> 여기서 첫 번째 분기는 정규 표현식의 첫 번째 대괄호를 나타냅니다. 하하 등등.

foreach ($result[1] as $val) { }

> 이 /upload/201109/20110926143903807.gif도 고려해야 하므로 정규식을 사용하여 결정하세요.
> 이는 다른 사람들처럼 /img/1.gif 또는 img/1.gif 대신 전체 경로를 사용합니다.
> 그러니 따로 판단한 후 이 두 가지를 판단하여 /img/1.gif인지 img/1.gif인지 확인하세요.

<?php 
//URL是远程的完整图片地址,不能为空, $filename 是另存为的图片名字 
//默认把图片放在以此脚本相同的目录里 
function GrabImage($url, $filename=""){ 
//$url 为空则返回 false; 
if($url == ""){return false;} 
$ext = strrchr($url, ".");//得到图片的扩展名 
if($ext != ".gif" && $ext != ".jpg" && $ext != ".bmp"){echo "格式不支持!";return false;} 
if($filename == ""){$filename = time()."$ext";}//以时间戳另起名 
//开始捕捉 
ob_start(); 
readfile($url); 
$img = ob_get_contents(); 
ob_end_clean(); 
$size = strlen($img); 
$fp2 = fopen($filename , "a"); 
fwrite($fp2, $img); 
fclose($fp2); 
return $filename; 
} 
//测试 
GrabImage("http://www.php.cn/images/logo.gif", "as.gif"); 
?>

ob_start : 출력 버퍼링 켜기
이 함수는 출력 버퍼링이 활성화된 동안 스크립트에서 출력이 전송되지 않고(헤더 제외) 내부 버퍼에 저장됩니다.
//
readfile: 파일을 읽고 출력 버퍼에 씁니다.
파일에서 읽은 바이트 수를 반환합니다. 오류가 발생하면 FALSE를 반환하고 @readfile()로 호출하지 않으면 오류 메시지를 표시합니다.
//

ob_get_contents : 출력 버퍼의 내용 반환(출력 버퍼의 내용 반환)
출력 버퍼링이 활성화되지 않은 경우 출력 버퍼의 내용을 지우거나 FALSE로 반환합니다(열기). ), FALSE 반환)
//
ob_end_clean(): 출력 버퍼를 정리(삭제)하고 출력 버퍼링을 끕니다(출력 버퍼 지우기).

위 내용은 PHP를 사용하여 CSS 이미지 코드를 캡처하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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