Antworten auf deine Fragen:
Neues Thema erstellen

String suchen, ausgeben bzw. ersetzen

Michiru

Noch nicht viel geschrieben

Hi,

ich versuch gerade, eine Art Variable zu erstellen, die ich in der Datenbank in Form von {Variable} eintragen würde. In der Variable soll dann der Dateiname eines Bildes stehen.

Mein Problem jetzt ist, dass ich das ja ersetzen muss.

PHP:
$ausgabevariable = str_replace("{Bildvariable_aus_DB}", "$Bildvariable", $text);

Dahinter UND Davor würde Text stehen. Leider funktioniert das nicht. Er ersetzt zwar die Variable richtig, aber gibt den gesamten Text wieder. Jetzt kann ich daraus natürlich kein Image erzeugen, das der Anwender der Seite ansehen kann.

LG
Michiru
 

Duddle

Posting-Frequenz: 14µHz

AW: String suchen, ausgeben bzw. ersetzen

Falls ich dich richtig verstehe, steht in $Bildvariable der Pfad oder Name eines Bildes. In $text steht irgendein Paragraph auf der Seite, inklusive mglw. die Zeichenkette "{Bildvariable_aus_DB}".

Was genau möchtest du nun in $ausgabevariable haben?

Im Moment steht dann nach dem str_replace() der Ursprungstext, nur eben wird das erste Vorkommen der Zeichenkette durch den Pfad/Namen des Bildes ersetzt. Ist das korrekt oder was ist dabei unerwünscht?


Duddle
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Ich habs gerade geschafft *freu*

Danke dir trotzdem. Ich weiß, ich habs kompliziert erklärt - finds aber auch nicht so einfach zu erklären :)


Edit: Doch nicht geschafft.

Ich bau gerade an so einer art Templatesystem, allerdings ohne Klassen. Ich möchte die Datenfelder auslesen, und in dem Datenfeld mit dem Fließtext Variablen angeben in der Form {Bild01}. Über PHP muss ich ihm ja sagen, mit was er diese Variable zu ersetzen hat. Problem ist jetzt: Bei einer Variable {Bild01} wird der Text einmal angezeigt, sobald aber in der Spalte ein zweites Bild erscheint, wird der ganze Text wiederholt. Und genau das möchte ich ja jetzt nicht.
 
Zuletzt bearbeitet:

Tr3icio

Nicht mehr ganz neu hier

AW: String suchen, ausgeben bzw. ersetzen

PHP:
$ausgabevariable = str_replace("{Bildvariable_aus_DB}", "$Bildvariable", $text);

1. " sind langsamer als '. ('Test' ist schneller als "Test");
2. "$Bildvariable" ist die laaangsamte Methode eine Variable zu nutzen. Man braucht für Variablen keine "" oder ''. Einfach hinschreiben und fertig.

PHP:
$ausgabevariable = str_replace('{Bildvariable_aus_DB}', $Bildvariable, $text);
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Stimmt, aber der Code hat sich jetzt auch wieder geändert. Aber das ist mir trotzdem keine Lösung :(
 

Duddle

Posting-Frequenz: 14µHz

AW: String suchen, ausgeben bzw. ersetzen

Über PHP muss ich ihm ja sagen, mit was er diese Variable zu ersetzen hat. Problem ist jetzt: Bei einer Variable {Bild01} wird der Text einmal angezeigt, sobald aber in der Spalte ein zweites Bild erscheint, wird der ganze Text wiederholt. Und genau das möchte ich ja jetzt nicht.

Entweder gibst du mal ein Minimalbeispiel oder den relevanten Code. So wie du es jetzt beschreibst kann das nix mit dem str_replace zu tun haben.


Duddle
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Sorry, kam nicht früher zum Antworten :/

Folgendermaßen sieht der Code aus (wollte auch schon mit strpos und strrpos die hinteren Teile entfernen, zeigte er mir bei ner Echo-Ausgabe aber dann immer nur ne 1 an. Wenn ich aber NUR strpos einsetze, zeigt er mir die Imagevariable {Bild01} an, und den Rattenschwanz des Textes dahinter).
Es handelt sich nur um eine Zeile.

PHP:
$image01_1_replace = str_replace('{bild01}', '<img src=\"images/uploads/spalte1/". $bild01 ."\" class=\"image_". $image_01_direction ."\">', $content_text);


Der Text in dem Datenbankfeld sieht ca. so aus:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. {bild01}

Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Der Text fließt dann, je nach dem, wie "image_01_direction" ist, rechts am Bild oder links am Bild vorbei.

LG
Michiru
 

SineTempore

Nicht mehr ganz neu hier

AW: String suchen, ausgeben bzw. ersetzen

Schau dir mal das syntax highlighting in deinem Beispiel nochmal genauer an. Siehst du den Fehler?
PHP:
$image01_1_replace = str_replace('{bild01}', '<img src="http://www.psd-tutorials.de/forum/images/uploads/spalte1/'. $bild01 .'" class="image_'. $image_01_direction .'"/>', $content_text);
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Außer, dass bei deinem die \ vor " fehlen, seh ich eigentlich keinen Fehler. Problem ist halt nur, dass er den Text so oder so mitnimmt. Er ersetzt zwar das {Bild01}, aber setzt den Text dazu und wenn ein zweites Bild da ist, wiederholt sichi der Text.

Der hintere / vor dem > ist durchaus vorhanden. Ich hab das Ding nur gerade abgetippt vom Laptop. Also nicht über Strg-C + -V :)
 

Duddle

Posting-Frequenz: 14µHz

AW: String suchen, ausgeben bzw. ersetzen

Okay, ich frage nochmal über-deutlich: WAS steckst du rein, WAS willst du raus bekommen, WIE versuchst du es derzeit? Ich konstruiere jetzt ein Beispiel und du folgst diesem Format um endlich von diesen Doppeldeutigkeiten und den unklaren Beschreibungen weg zu kommen.

Eingabe:
Lorem ipsum dolor {bild01}
Erwünschte Ausgabe:
Lorem ipsum dolor <img src="foo.jpg" />
Algorithmus:
PHP:
$eingabe = "Lorem ipsum dolor {bild01}";
$bild = "foo.jpg";
$ausgabe = str_replace('{bild01}', '<img src="'.$bild.'" />', $eingabe);

Ein zweites Beispiel:
Eingabe:
Lorem ipsum dolor {bild01} und {bild02}
Erwünschte Ausgabe:
Lorem ipsum dolor <img src="foo.jpg" /> und <img src="bar.jpg" />
Algorithmus:
PHP:
$eingabe = "Lorem ipsum dolor {bild01} und {bild02}";
$bild = "foo.jpg";
$bild2 = "bar.jpg"
$ausgabe = str_replace('{bild01}', '<img src="'.$bild.'" />', $eingabe);
$ausgabe = str_replace('{bild02}', '<img src="'.$bild2.'" />', $ausgabe);


Duddle
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Dein Vorschlag ist ziemlich das gleiche, und funktioniert nicht, habs ausprobiert. Ich kopier mal das ganze. Es geht auch darum, dass es max. drei Spalten geben wird und ich kann zuordnen, in welche Spalte das Bild soll.

PHP:
    if(!empty($image_01)) {
        if($image_01_column == '1') {
            $image01_1_replace = str_replace('{image01}', '<img src=\'images/uploads/spalte1/'. $image_01 .'\' class=\'image_'. $image_01_direction .'\'\/\>', $content_text);
        }
        
        if($image_01_column == '2') {
            $image01_2_replace = str_replace('{image01}', '<img src=\'images/uploads/spalte2/'. $image_01 .'\' class=\'image_'. $image_01_direction .'\'\/\>', $content_text2);
        }
        
        if($image_01_column == '3') {
            $image01_3_replace = str_replace('{image01}', '<img src=\'images/uploads/spalte3/'. $image_01 .'\' class=\'image_'. $image_01_direction .'\'\/\>', $content_text3);
        }
    }
    
    if(!empty($image_02)) {
        if($image_02_column == '1') {
            $image02_1_replace = str_replace('{image02}', '<img src=\'images/uploads/spalte1/'. $image_02 .'\' class=\'image_'. $image_02_direction .'\'\/\>', $content_text);
        }
    }
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: String suchen, ausgeben bzw. ersetzen

"Funktioniert nicht" ist keine aussagekräftige Fehlerbeschreibung. WAS genau kommt bei dir raus wenn du WAS genau reinsteckst?



Duddle
 

Michiru

Noch nicht viel geschrieben

AW: String suchen, ausgeben bzw. ersetzen

Duddle, dies hab ich bereits oben beschrieben. Der Text wird DOPPELT wiederholt.

Auch mit der Möglichkeit:
PHP:
$eingabe = "Lorem ipsum dolor {bild01} und {bild02}";
$bild = "foo.jpg";
$bild2 = "bar.jpg"
$ausgabe = str_replace('{bild01}', '<img src="'.$bild.'" />', $eingabe);
$ausgabe = str_replace('{bild02}', '<img src="'.$bild2.'" />', $ausgabe);
da wird mir dann doppelt das erste Bild angezeigt.
 

Duddle

Posting-Frequenz: 14µHz

AW: String suchen, ausgeben bzw. ersetzen

Das ist schlichtweg nicht möglich. PHP mag zwar nicht die beste Sprache der Welt sein, aber es schafft es schon noch zwei einfache Textersetzungen durchzuführen.

Mein Beispiel funktioniert exakt wie ich es beschrieben habe (abgesehen vom fehlenden Semikolon und expliziter Ausgabe). Nur wenn foo.jpg und bar.jpg die gleichen Bilder sind werden auch zwei gleiche Bilder angezeigt. Anders ist es in diesem Beispiel nicht möglich.

Der Fehler liegt mit extrem hoher Wahrscheinlichkeit in deinem Quellcode oder deinen Eingabedaten. Und du hast immer noch keinen Einblick in den generierten HTML-Code gewährt.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben