>백엔드 개발 >PHP 튜토리얼 >CSS에 있는 모든 이미지 파일의 PHP 코드를 가져와 다운로드하세요.

CSS에 있는 모든 이미지 파일의 PHP 코드를 가져와 다운로드하세요.

高洛峰
高洛峰원래의
2016-11-30 13:39:261159검색

이 기사의 하이라이트는 정규식이 더 복잡하다는 것입니다(?(-_-)?). 그리고 복사 기능을 매우 강력하게 사용할 수 있습니다.
> 그런데 방금 NsYta가 Xiao Xie의 테마가 너무 하얗다는 말을 들었습니다. 요즘 너무 바빠서 시간도 없고, 그렇지 않으면 제가 직접 새로운 테마를 만들곤 했어요.

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.bitsCN.com/css/이므로 위 두 파일의 위치가 다릅니다.

> 첫 번째 파일은 경로가 상대 루트 경로를 사용하기 때문에 /upload/201109/20110926143903807.gif에 있습니다.
> 두 번째는 /upload/201109/20110926143903169.gif에 있으며 해당 경로는 일반적인 상대 경로입니다.
코드 복사 코드는 다음과 같습니다.
$url = 'http://www.bitsCN.com/css/'; preg_match('/(.*//.*?)//',$ url,$ 호스트);
//정규식을 사용하여 http://www.bitsCN.com/을 추출합니다. 백엔드에 슬래시를 추가하는 것을 잊지 마세요.
//.*?는 게으른 매칭입니다. 즉, 매칭할 수 있는 콘텐츠가 적을수록 지나치지 않도록 합니다.
$호스트 = $호스트[1]

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

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

>
$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인지 확인하세요.
코드 복사 코드는 다음과 같습니다.
if (preg_match('/^http.*/',$val)) { $target = $val }
else if (preg_match('/^) /.* /',$val)) { $target=$host.$val; }
else { $target=$url.$val }
echo $target."
rn";

> 마지막으로 /img/1.gif에서 파일명 1.gif를 꺼내서 파일을 저장합니다.
코드 복사
preg_match('/.*/(.*.D+)$/',$val,$name)

> 여기에서는 강력한 복사 기능의 사용법을 소개합니다.
코드 복사 코드는 다음과 같습니다.
if (!is_file('./img/'.$name[1])) {
$imgc = file_get_contents($target); 핸들 = fopen ('./img/'.$name[1],'w+');
fwrite($handle,$imgc)
fclose($handle)

> 위의 방법은 우리의 오래된 방법입니다. 매우 번거롭습니다. 어느 날 Xiao Xie는 갑자기 복사의 힘을 발견했습니다.
> Copy는 실제로 다운로드가 가능하므로 다음 코드를 이용하면 쉽게 처리할 수 있으며, 위의 코드는 폐기할 수 있습니다.
코드 복사 코드는 다음과 같습니다.
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$ name[1 ]);

> 5. 전체 소스 코드:

> 사용 시 $url만 입력하고 모든 CSS 내용을 abc에 저장하세요. .css 그냥 쳐보세요.
코드 복사 코드는 다음과 같습니다.
$url = 'http://www.bitsCN.com/css/'
$data = file_get_contents('abc. css') ;
preg_match('/(.*//.*?)//',$url,$host)
$host = $host[1]
if (!is_dir ('img')) { mkdir('img') }
$regex = '/url('{0,1}"{0,1}(.*?)'{0,1}"{ 0,1 })/';
preg_match_all($regex,$data,$result)
foreach ($result[1] as $val) {
if (preg_match('/^http. */' ,$val)) { $target = $val; }
else if (preg_match('/^/.*/',$val)) { $target=$host.$val }
else { $target=$url.$val; }
echo $target."
rn"
preg_match('/.*/(.*.D+)$/', $val, $name);
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$name[1] );
}
}?>

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