Seite 1 von 1

mit eregi_replace aus img Style Classe und src rausholen??

Verfasst: 20.08.2010 08:53
von Mafia GmbH
Hallo habbe folgendes Problem.
Ich möchte im String was bereits HTML Inhalt enthält folgendes mit allen Bilderm machen.
die HTML Variable enthölt sowas:
...<img class="styleleft" title="blalbal" src="http://www.xy.de/z.jpg" alt="" />...

Nun möchte ich um die Bilder einen schönnen Ramen bauen und darum brauche ich einen DIV durm herum.

Das Problem ist dabei aber das "styleleft" float:left; enthält und mir auch alles kaput macht wen ich einfach nur einen div drumherum mache.

Nun soll es aber so aussehen damit es alles klappt:

<div class="styleleft"><img title="blalbal" src="http://www.xy.de/z.jpg" alt="" /></div>


Wie man sieht will ich styleinformation in div übertragen und rest beim <img beibehalten.
Leider weiß ich nicht so recht wie es geht.
Habe schon folgendes Probiert:
eregi_replace('<img class="(.*)"(.*) />', '<div class="\\1"><img \\2 /></div>',$string);

Leider wird alles nur ins Div gepakt und es funktioniert nichts.
Kann jemand bitte eine verbesserung angeben? Habe leider schon vieles Probiert....:(

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 11:02
von aurora876
geht das ganze auch in verständlich?
ich hab keine ahnung, was du eigentlich genau machen willst und was das eregi_replace usw. damit zu tun haben soll. :o

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 11:32
von Mafia GmbH
eregi_replace ist eine PHP Funktion die einen String durchlaufen kann und anhang eines Musters es entsrechen manipulieren kann.

Ich möchte eben alle Bilder die in einem Text vorkommen etsrechen mit einem <div> Kontener versehen und die Style Classe die normaller weise beim Bild <img> eingetragen wird ins div übernehmen.

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 11:57
von gn#36
Die eregi_replace ist übrigens DEPRECATED und wird in zukünftigen PHP Versionen nicht mehr enthalten sein. Ich würde daher eher auf [php:preg_replace] zurückgreifen.

Dein Problem bei dem Ausdruck ist übrigens, dass er "gierig" ist, d.h. er trifft auf so viel wie möglich zu. Bei mehreren Bildern in Folge wird der erste Treffer daher direkt den Anfang des ersten Bildes nehmen und alles bis zum Ende des letzten Bildes enthalten. Versuch stattdessen mal nichtgierige Ausdrücke, also z.B.

Code: Alles auswählen

#<img class="([^"]+)"(.*?) />#i
oder

Code: Alles auswählen

#<img class="([^"]+)"([^>]+)/>#i
(Beides in preg_replace Syntax).

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 12:17
von Mafia GmbH
Ja so funktioniert es :)

Nun habe ich ein weiteres Problem bekommen.
Nich jedes Bild enthält class="..." und wen das Bild keine Style Class ethält wird das bild auch nicht mehr erkannt.

Kann man da was machen das es jedes Bild nimt? egal ob mit class oder ohne ??

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 13:11
von gn#36
Sicher. Wenn du Elemente nur optional haben willst, dann kannst du ein Fragezeichen dahinter hängen:

Code: Alles auswählen

Ich bin (fast )?da!
passt z.B. sowohl auf "Ich bin fast da!" als auch auf "Ich bin da!". Allerdings bin ich mir nicht ganz sicher was dann mit den in diesem Fall enthaltenen Klammerausdrücken passiert, vermutlich wären die einfach leer. Ich würde das in dem Fall daher einfach auf zwei Ausdrücke aufteilen, mit dem einen suchst du die Bilder ohne Klasse und dann die übrigen Bilder mit.

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 20.08.2010 18:28
von Pyramide
Warum machst du das ganze überhaupt so kompliziert? Wenn du Bildern einen Rahmen hinzufügen willst, dann mach doch einfach genau das:

Code: Alles auswählen

img {
    border: 3px dotted magenta;
}

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 22.08.2010 18:28
von Frank1604
Pyramide hat geschrieben:Warum machst du das ganze überhaupt so kompliziert? Wenn du Bildern einen Rahmen hinzufügen willst, dann mach doch einfach genau das:

Code: Alles auswählen

img {
        border: 3px dotted magenta;
    }
Weil er nicht nur einen Rahmen haben möchte, sondern einen "schönen" Rahmen.
Mafia GmbH hat geschrieben:Nun möchte ich um die Bilder einen schönnen Ramen bauen und darum brauche ich einen DIV durm herum.
Und ich könnte mir vorstellen, dass für ihn "schön" etwas anderes ist, als ein fetter telekomschweinchenrosaner gepünktelter Rahmen ;)

Re: mit eregi_replace aus img Style Classe und src rausholen

Verfasst: 22.08.2010 19:31
von Pyramide
Selbstverständlich war das von mir gepostete nur ein Beispiel und kann durch beliebiges CSS ersetzt werden...