この記事のハイライトは、正規表現がより複雑であること、?(-_-)?、そして Copy 関数の非常に強力な使用法があることです。
> ところで、NsYta が Xiao Xie のテーマは白すぎると言っているのを聞きましたが、それはばかげています。最近忙しくて時間がないので、新しいテーマを自分で作成します。
1. CSS で画像をキャプチャします:
> 1. まず準備をします:
> 最初のステップは、CSS の元のパスを $url 変数に保存し、CSS の内容を 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/ なので、上記 2 つのファイルの場所は異なります。
> 最初のファイルは /upload/201109/20110926143903807.gif にあります。これは、そのパスが相対ルート パスを使用しているためです。
> 2 番目のパスは /upload/201109/20110926143903169.gif にあり、そのパスは通常の相対パスです。
コードをコピーします コードは次のとおりです:
$url = 'http://www.bitsCN.com/css/' preg_match('/(.*//.*?)//',$url,$ host);
//ここで正規表現を使用して http://www.bitsCN.com/ を抽出します。バックエンドにスラッシュを追加することを忘れないでください。
//.*? は遅延マッチングです。つまり、一致できるコンテンツが少ないほど、やりすぎないようになります。
$host = $host[1];
2. 画像保存フォルダーを作成します。
> Xiaoxie は、ここで is_dir を使用してフォルダーが存在するかどうかを確認します。存在する場合は、再度作成する必要はありません。
>はは、ちなみに、is_file関数は、このファイルが通常のファイルであるかどうか、存在するかどうかを判断できます。
> しかし、Webmasterworld.com で誰かが議論しているのを見たことがあるので、file_exists() の方が優れています。
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 であるかを確認します。
コードをコピーします。 コードは次のとおりです。
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);
$handle = fopen('./ img/'. $name[1],'w+');
fwrite($handle,$imgc);
}
>面倒な。あるとき、シャオシェは突然コピーの力を発見しました。
> コピーは実際にダウンロードできるので、次のコードを使用して簡単に処理でき、上記のものは廃止できます。
コードをコピーする コードは次のとおりです。
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'); '/(. *//.*?)//',$url,$host);
$host = $host[1]
if (!is_dir('img')) { mkdir('img'); ; }
$ regex = '/url('{0,1}"{0,1}(.*?)'{0,1}"{0,1})/'; 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]);