Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung, wie man PHP zum Erfassen von CSS-Bildcode verwendet

Ausführliche Erklärung, wie man PHP zum Erfassen von CSS-Bildcode verwendet

伊谢尔伦
伊谢尔伦Original
2017-07-17 15:22:081502Durchsuche

1. Erfassen Sie Bilder in CSS:
> Führen Sie zunächst die Vorbereitungen durch: > und speichern Sie dann den CSS-Inhalt in abc.css.
> Da häufig mehrere CSS-Dateien vorkommen, hat Xiaoxie keinen CSS-Pfad 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 verwenden Sie dann den regulären Inhalt Ausdrücke zum Herausnehmen des Domänennamens.
> 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.jb51.net/css/, sodass die Speicherorte der beiden oben genannten Dateien unterschiedlich sind.

> Die erste Datei ist /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.

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 etwas überlegen, weil ich einmal gesehen habe, wie jemand auf Webmasterworld.com darüber gesprochen 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.

ob_start: Ausgabepufferung aktivieren
<?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"); 
?>
Diese Funktion aktiviert die Ausgabepufferung, solange die Ausgabepufferung aktiv ist. Es wird keine Ausgabe vom Skript gesendet (außer Headern), stattdessen wird die Ausgabe in gespeichert ein interner Puffer. (Ausgabe wird in einem internen Puffer gespeichert)

//
readfile: Eine Datei lesen und in den Ausgabepuffer schreiben
Gibt die Anzahl der aus der Datei gelesenen Bytes zurück. Gibt bei einem Fehler FALSE zurück und zeigt eine
Fehlermeldung
an, es sei denn, es wird als @readfile() aufgerufen. //
ob_get_contents : Gibt den Inhalt des Ausgabepuffers zurück (gibt den Inhalt des Ausgabepuffers zurück)
Dies gibt den Inhalt des Ausgabepuffers zurück, ohne ihn zu löschen, oder FALSE, wenn die Ausgabepufferung erfolgt ist nicht aktiv. (Gibt FALSE zurück, wenn der Ausgabepuffer nicht aktiv (offen) ist)
//
ob_end_clean() : Bereinigen (löschen) Sie den Ausgabepuffer und deaktivieren Sie die Ausgabepufferung.

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man PHP zum Erfassen von CSS-Bildcode verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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