Zeichenkette suchen auslesen und umwandeln und dann ersetzen

djnelly

Erfahrenes Mitglied
Hallo Tutorials-Gemeinde:

ich habe ein Problem mit einem String.

Hier der String:
Code:
http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYyMi5qcGc=.jpg,,
http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYyMC5qcGc=.jpg,,
http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYxOS5qcGc=.jpg,,
http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYxNy5qcGc=.jpg,

Nun möchte ich den Code zwischen "/thumb/" und ".jpg" auslesen, mit base64_decode decodieren und ihn inklusive dem ".jpg" ersetzen.

Beispiel Datensatz 1:

Alter String: http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYyMi5qcGc=.jpg
Neuer String: http://www.test.de/thumb/bild1.jpg

Achtung! Das .jpg in neuem String kommt aus der Decodierung. Das .jpg im alten String soll mit Ersetzt werden. sonst müsste man es aus den neuen String noch entfernen.

Die Zeichenketten, die ich umwandeln und ersetzen möchte, sind immer unterschiedlich.
Ich habe es mit reguläre ausdrücken versucht, da konnte ich aber nur Ersatztext bestimmen. Der Ersatztext soll aber die base64_decode von Suchstring sein.

Kann mir jemand helfen?

Danke
 
Hi,

mit regulären Ausdrücken liegst Du schon ganz richtig. Wenn Du den Modifier e verwendest, wird der Ersatztext als PHP-Code ausgewertet und das Ergebnis als Ersatzstring verwendet.

LG
 
Hi,

danke für die Antwort.

Ich muss doch den Text zwischen "thumb/" und ".jpg" auslesen, verarbeiten mit base64 und dann ersetzen.

Verstehe da nicht ganz, wie ich auf den gefunden Text zugreifen kann zum bearbeiten

LG
 
Code:
$neuerString = preg_replace("!thumb\/(.*?).jpg!","thumb/[XX]text[XX]",$teststring);

sorry, komme mit den regulären Ausdrücke nicht wirklich klar...
 
Hi,

bin nicht so der PHP Experte.
Ich versuchs trotzdem mal ;)

PHP:
<?php
$line = "http://www.test.de/thumb/aW1hZ2VfMTIyNDA5ODYyMi5qcGc=.jpg,,";
preg_match("/^(.*?thumb\/)(.*?)\.jpg(.*)$/", $line, $matches);
echo "$matches[1]" .  base64_decode($matches[2]) . "$matches[3]\n";
?>

Gruß
joschi
 
Hi,

das wäre so richtig, wie ich es gemeint habe.
nur wie bekomme ich jetzt den neuen String gleich mit ersetzt?

Das der ungewandelte neue String in alten String ersetzt wird. Ich möchte noch dazusagen, dass mehrere solcher Einträge dort vorkommen.

Danke
 
Hi,

du könntest den alten, langen String zuerst mal in ein Array umwandeln (zum Beispiel per "explode()"), dann Element für Element ersetzen und dann kannst du Link für Link ausgeben oder in das Array zurückspeichern :)

Gruß
Bratkartoffel
 
Zurück