Heim  >  Artikel  >  Backend-Entwicklung  >  Besorgen Sie sich den PHP-Code aller Bilddateien in CSS und laden Sie ihn herunter

Besorgen Sie sich den PHP-Code aller Bilddateien in CSS und laden Sie ihn herunter

高洛峰
高洛峰Original
2016-11-30 13:39:261135Durchsuche

Das Highlight dieses Artikels ist, dass der reguläre Ausdruck komplizierter ist, ?(-_-)?, und dann gibt es eine sehr leistungsstarke Verwendung der Kopierfunktion.
> Übrigens habe ich gerade NsYta sagen hören, dass das Thema von Xiao Xie zu weiß ist, was lächerlich ist. Ich bin in letzter Zeit zu beschäftigt und habe keine Zeit, sonst würde ich selbst ein neues Thema erstellen.

1. Bilder in CSS erfassen:
> Treffen Sie zunächst die Vorbereitungen:
> Inhalt in abc.css.
> Da häufig mehrere CSS-Dateien vorkommen, hat Xiaoxie keinen CSS-Pfad direkt eingegeben.
> Führen Sie stattdessen die Inhalte mehrerer CSS-Dateien zusammen und stopfen Sie sie alle in die Datei abc.css.

$data = file_get_contents('abc.css');

> Lesen Sie dann den Inhalt der CSS-Datei in die Variable $data ein und extrahieren Sie dann den Domänennamen mit regulären Ausdrücken .
> Da davon ausgegangen wird, dass viele Bilddateien relative Stammpfade verwenden, wie z. B. /img/1.gif und img/1.gif.
> Dann lautet die ursprüngliche Adresse von CSS http://www.bitsCN.com/css/, sodass die Speicherorte der beiden oben genannten Dateien unterschiedlich sind.

> Die erste Datei befindet sich unter /upload/201109/20110926143903807.gif, da ihr Pfad einen relativen Stammpfad verwendet.
> Und der zweite befindet sich unter /upload/201109/20110926143903169.gif, und sein Pfad ist nur ein gewöhnlicher relativer Pfad.
Code kopieren Der Code lautet wie folgt:
$url = 'http://www.bitsCN.com/css/'; preg_match('/(.*//.*?)//',$ url,$ host);
//Verwenden Sie reguläre Ausdrücke, um http://www.bitsCN.com/ zu extrahieren. Vergessen Sie nicht, im Backend einen Schrägstrich hinzuzufügen.
//.*? ist Lazy Matching, das heißt, je weniger Inhalte übereinstimmen, desto weniger Inhalte können übereinstimmen, sodass es nicht übertrieben wird.
$host = $host[1];

2. Erstellen Sie den Bildspeicherordner:
>
> Haha, die Funktion is_file kann übrigens feststellen, ob diese Datei eine normale Datei ist und ob sie existiert.
> Aber file_exists() ist überlegen, weil ich einmal gesehen habe, wie jemand auf Webmasterworld.com darüber diskutiert hat.

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

>
$regex = '/url('{0,1}"{0,1}(.*?)'{0,1}"{0,1})/'
//Verwende regulär Ausdrücke hier Um die Bildadresse abzugleichen, müssen drei Situationen berücksichtigt werden, nämlich url(1.gif) url('1.gif') url("1.gif").
//Diese drei Schreibmethoden können verwendet werden, daher verwenden wir die oben genannten regulären Regeln, um das darin enthaltene 1.gif herauszunehmen.
//'{0,1} bedeutet, dass einfache Anführungszeichen 1 oder 0 Mal vorkommen können, " bedeutet, dass doppelte Anführungszeichen 1 oder 0 Mal vorkommen dürfen.
//Lazy Matching muss in der Mitte verwendet werden, andernfalls wird herausgenommen. Es ist 1.gif" statt 1.gif Vogel, O(∩_∩)P.
preg_match_all($regex,$data,$result);

> Verarbeiten Sie diese Bilder:

> mit dem Inhaltsarray des ersten Zweigs.
> Nun, der erste Zweig hier stellt die erste Klammer im regulären Ausdruck dar, haha, und so weiter.

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

> Verwenden Sie dann zur Bestimmung reguläre Ausdrücke, da Sie auch dies berücksichtigen müssen /upload/201109/20110926143903807.gif.
> Hierbei wird der vollständige Pfad anstelle von /img/1.gif oder img/1.gif wie bei anderen verwendet.
> Bewerten Sie es also separat und beurteilen Sie dann diese beiden, um zu sehen, ob es /img/1.gif oder img/1.gif ist.
Code kopieren Der Code lautet wie folgt:
if (preg_match('/^http.*/',$val)) { $target = $val; }
else if (preg_match('/^ /.* /',$val)) { $target=$host.$val }
else { $target=$url.$val }
echo $target."
rn";

> Nehmen Sie abschließend den Dateinamen heraus, der 1.gif in /img/1.gif lautet, um die Datei zu speichern.
Code kopieren Der Code lautet wie folgt:
preg_match('/.*/(.*.D+)$/',$val,$name);

> Beim Herunterladen stellen wir Ihnen hier die Verwendung einer leistungsstarken Kopierfunktion vor.
Code kopieren Der Code lautet wie folgt:
if (!is_file('./img/'.$name[1])) {
$imgc = file_get_contents($target);
$ handle = fopen ('./img/'.$name[1],'w+');
fwrite($handle,$imgc);
> Die obige Methode ist unsere alte Methode, Quacksalber, sie ist sehr mühsam. Einmal entdeckte Xiao Xie plötzlich die Kraft des Kopierens.
> Die Kopie kann tatsächlich heruntergeladen werden, sodass Sie sie problemlos mit dem folgenden Code verarbeiten und den obigen Code zurückziehen können.
Code kopieren Der Code lautet wie folgt:
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$ name[1 ]);
}

> Füllen Sie bei der Verwendung einfach die $url aus und speichern Sie dann den gesamten CSS-Inhalt .css Einfach zuschlagen.
Code kopieren Der Code lautet wie folgt:
$url = 'http://www.bitsCN.com/css/';
$data = file_get_contents('abc. css') ;
preg_match('/(.*//.*?)/',$url,$host);
$host = $host[1]; ('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"; $val, $name);
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$name[1] );
}
}?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn