PHP - Teile aus einem String in ein Array packen

Alt 28.02.2009, 14:58   # 1
Tobi94b
 
Registriert seit: 11.11.2008
Beiträge: 24
Hallo,

ich möchte mit PHP bestimmte Zeichenketten (Bild URLs) aus einem String (eine CSS Datei/ih) in ein Array packen und dann mit einer Schleife (vermutlich While) ausgeben.
Das Ausgeben krieg ich glaub ich gerade noch selber hin ^^

Im Folgenden beschreibe ich was ich ungefähr vorhabe:

Aufbau der CSS-Datei:
Code:
#blablabla {
 width: bla;
 height: bla;
 background-image: url(http://meineseite.de/bilder/bild1.gif);
div.blablabla {
 width: bla;
 height: bla;
 background-image: url(http://meineseite.de/bilder/bild2.png);
In der CSS Datei sind die Bezeichnungen unterschiedlich (mal für id mal für class etc.), d.h. muss das php skript am besten unabhängig von dem drum rum immer nur den Bildpfand fürs Array nehmen

PHP
PHP-Code:
<?php
$string 
"*hier kann ich die CSS Datei reinkopiern*";
funktion blabla bla ($string)
in Array oder so weiss ich eben nicht

while ($i *Rest guck ich später*){
  echo 
$bilder[$i];
  
$i ++
}
Ich hoffe es ungefähr verständlich und hoffe, dass ihr mir helfen könnt.

LG Tobi
  Mit Zitat antworten
Alt 01.03.2009, 19:43   # 2
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.899
Nu noch einmal zum Verständniss. Du möchtest also nur die Bild-URLs aus einer CSS-Datei ausgeben?
  Mit Zitat antworten
Alt 03.03.2009, 14:49   # 3
Tobi94b
Threadstarter
 
Registriert seit: 11.11.2008
Beiträge: 24
Ja, genauso ist es.
  Mit Zitat antworten
Alt 03.03.2009, 16:02   # 4
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.899
Auf die Schnelle kann ich Dir diese simple Lösung anbieten:

PHP-Code:
// CSS-Datei einlesen
$sFile file_get_contents("datei.css");
printImageUrlsFromCSS($sFile);

function 
printImageUrlsFromCSS($sFile)
{
    
//String teilen anhand von "background-image: url("
    
$aImages explode("background-image: url("$sFile);
    
$iImages count($aImages);

    
//Einzelnen Stringteile durchlaufen
    
for ($i 1$i $iImages$i++)
    {
        
//Aktuellen Teil (Block) anhand von ");" teilen
        
$aImageUrl explode(");"$aImages[$i]);
        
$sImageUrl $aImageUrl[0];
        
        echo 
$sImageUrl "\n";
    }

Das geht sicherlich eleganter mit Regex aber du sollst den Lösungsweg auch nachvollziehen können. Ist allerdings ungetestet und ein Schnellschuss.

Gruß
Spooner
  Mit Zitat antworten
Alt 03.03.2009, 16:13   # 5
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.899
Ach ja, und wenn du es als Array haben möchtest, dann sieht es folgendermaßen aus:

PHP-Code:
// CSS-Datei einlesen
$sFile file_get_contents("datei.css");
$aImageUrls printImageUrlsFromCSS($sFile);

foreach (
$aImageUrls as $sImageUrl)
{
    echo 
$sImageUrl "\n";
}

function 
printImageUrlsFromCSS($sFile)
{
    
//String teilen anhand von "background-image: url("
    
$aImages explode("background-image: url("$sFile);
    
$iImages count($aImages);

    
//Einzelnen Stringteile durchlaufen
    
for ($i 1$i $iImages$i++)
    {
        
//Aktuellen Teil (Block) anhand von ");" teilen
        
$aImageUrl    explode(");"$aImages[$i]);
        
$aImageUrls[] = $aImageUrl[0];
    }
        
        return 
$aImageUrls;

Ebenfalls ungetestet.

Gruß
  Mit Zitat antworten
Alt 03.03.2009, 19:29   # 6
Tobi94b
Threadstarter
 
Registriert seit: 11.11.2008
Beiträge: 24
wow vielen Dank!
testen kann ichs auch gerade nicht, aber aufn ersten blick siehts gut aus und Danke für die Mühe
Ich habe irgendwie so ne eigene Lösung (ist eigentlich keine) gefunden, die nicht wirklich funzt, da waren in einem Datensatz vom Array am ende immer noch ); / ) reapaeat: 50% 50%; drin :S
also vielen Dank
lg
  Mit Zitat antworten
Alt 03.03.2009, 22:21   # 7
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.899
Kein Problem. Lass es uns, und den nächsten Ratsuchenden, bitte wissen, ob alles funktioniert hat.

Gruß
  Mit Zitat antworten

Alt 28.05.2012, 21:12 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:12 Uhr.