ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使ってCSS画像コードをキャプチャする方法を詳しく解説

PHPを使ってCSS画像コードをキャプチャする方法を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-17 15:22:081571ブラウズ

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/ なので、上記 2 つのファイルの場所は異なります。

> 最初のファイルは /upload/201109/20110926143903807.gif にあります。これは、そのパスが相対ルート パスを使用しているためです。
> 2 番目のパスは /upload/201109/20110926143903169.gif にあり、そのパスは通常の相対パスです。

2. 画像保存フォルダーを作成します。

> Xiaoxie は、フォルダーが存在するかどうかを確認するために 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") が考えられます。
//この3つの書き方はどれも使えるので、上記の規則に従って中の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 の代わりに完全なパスを使用します。
> したがって、それを個別に判断してから、これら 2 つを判断して、それが /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: ファイルを読み取り、出力バッファに書き込みます。
ファイルから読み取ったバイト数を返します。 @readfile() として呼び出されない限り、エラー時に FALSE を返し、
エラー メッセージ
を表示します。 //
ob_g​​et_contents : 出力バッファの内容を返します(出力バッファの内容を返します)
これは、出力バッファリングがアクティブでない場合、出力バッファの内容をクリアするか、FALSE を返します。 )、FALSE を返す)
//
ob_end_clean(): 出力バッファをクリーン (消去) し、出力バッファリングをオフにします (出力バッファをクリアします)。

以上がPHPを使ってCSS画像コードをキャプチャする方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。