Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo!

Kann mir jemand erklären wie ich dynamisch Werte / Variablen / Strings wie ich sie unten aufgelistet habe, durch einen einfachen '-' zu ersetzen ? (mit php)

Also nur zur Info, die Variablen / Strings kenne ich nicht vorher, da sie jedesmal verschieden sein können (das ist ja die Schwierigkeit an der Sache!):

z.bsp:

@@@testtest@@@

oder

@@@bla111blabla11122@@@

oder

@@@1_vorname@@@

oder

@@@5_strasse@@@

etc. usw.

Und nun möchte ich diese einzelnen Strings quasi mit einem einfachen '-' ersetzen. Da sie jedoch variieren und ich die Länge der Strings nicht sagen kann, kann ich ja auch kein einfaches str_replace einsetzen... oder???? Man müsste quasi ein script haben, dass nach dem hier sucht: '@@@' (jeweils am Anfang und am Ende eines Strings) und diese @'s und den Text der dazwischen steht (dessen Länge variiert), ersetzt.

Bitte helft mir :rolleyes:

DANKE IM VORAUS !!!!

Geschrieben

hi,

ich verstehe nicht ganz, was du willst.:confused:

Willst du nur die'@@@' ersetzen?

Dann kannst du ja str_replace() benutzen. Diese Funktion brauch keine Stringlänge. Die ersetz einfach alle '@@@' durch dienen String.

str_replace('@@@','dein String',$string);

Die Länge des Strings bekommst du mit strlen().

Geschrieben

Mahlzeit!

Zunächst tust du den Text, der bearbeitet werden soll in eine Variable, meinetwegen $text.

Dann nehmen wir die Methode pre_replace(). Die Syntax ist preg_replace($patterns, $replace, $text).

Für deine Ansprüche müsste es also heissen:

preg_replace("@@@.*@@@", "-", $text);

Danach hast du statt der beschriebenen (seltsam markieren) Strings einfache "-". Wenn der String nur allein in einer Zeile vorkommen kann/darf, dann geht das:

preg_replace("^@@@.*@@@$", "-", $text);

Das "Dach" bezeichnet den Anfang einer Zeile, das "$" das Ende.

Mit Regulären Ausdrücken kann man aber noch unendlich mehr. Such mal nach nem guten Tutorial (zum Bleistift bei Google [suchbegriffe schon im Link drin!])

Tschö,

Florian

Geschrieben

Hallo,

ich mache das immer so.


$beitrag = eregi_replace("\\[@@@]([^\\[]*)\\[@@@\\]","ersetzter string",$beitrag);[/PHP]

So in der Art müsste das funktionieren. Dann wird alles zwischen [@@@] und [@@@] ersetzt.

Frank

Geschrieben

hi,

wenn ich jetzt richtig verstanden habe, soll es danach so aussehen:

'-'

oder?

Wozu dann der ganze Aufwand????

Warum machst du dann nicht einfache Zuweisung?

$text = '-';:confused:

Geschrieben
Originally posted by palvoelgyi

ich mache das immer so.

$beitrag = eregi_replace("\\[@@@]([^\\[]*)\\[@@@\\]","ersetzter string",$beitrag);

Hallo Frank!

Die Zeichen in den eckigen Klammern werden als Menge gesehen. Wenn du also [123] suchst findet er "123" und "321" und "213". Wofür steht das "([^\[]*)" eigentlich? Meine Interpretation ist: eine Menge bestehen aus "^\[", also am Anfang der Zeile mit "[" beginnend, und das in beliebiger Folge ("*").

Bin leicht verwirrt,

Florian

PS: @ Kathi: Stimmt! *lol* Den ganzen Text auf "-" reduzieren! ;) -- Naa, ich geh mal davon aus, dass es auch Zeilen in dem Text geben soll, die nicht ersetzt werden sollen.

Geschrieben

Nun, es klappt leider noch nicht. Dazu kurz zu dem Sinn und was das Ganze überhaupt soll:

Ich bekomme von einem PDF-Formular Daten / Variablen, die mein PHP-Script empfängt und weiterverarbeitet. Ich habe in meiner Datenbank ein Feld 'body', in welchem der Text steht, der später per eMail versendet wird.

In diesem Text hat man die Möglichkeit Variablen anzugeben, so könnte also der Inhalt des Tabellenfeldes 'body' aussehen:

--------------------------------------------------------------------------------------------

Hallo @@@vorname@@@ @@@nachname@@@

Wie geht es Dir?

Du hast im PDF-Formular folgende Angaben gemacht:

Alter: @@@alter@@@

Strasse: @@@strasse@@@

--------------------------------------------------------------------------------------------

So, da nun leider Gottes das PDF-Formular die NICHT AUSGEFÜLLTEN Eingabefelder (genauergesagt die Checkboxen, bei Eingabefeldern kommt wenigstens der Feldname an :)) ÜBERHAUPT NICHT übermittelt (nicht einmal der Name des Feldes wird gesendet, geschweige denn der Wert) werden, MUSS ich diese nicht von meinem PHP-Script ersetzten Variablen wie z.Bsp. @@@alter@@@ entsprechend durch ein '-' Zeichen ersetzen. (Übrigens: Die somit zusammengesetzten Daten werden per eMail an den Benutzer verschickt)

So ich habe das hier auch eingefügt:

$pdfform_body = eregi_replace("\@@@([^\[]*)\@@@","-",$pdfform_body);

Er ersetzt aber NUR das erste im Text / Template vorkommende @@@variabler_name@@@, auf das obige Beispiel bezogen würde das also heissen, er ersetzt NUR @@@alter@@@ und alle nachfolgenden @@@strasse@@@ werden einfach gelöscht, bzw ersetzt durch " " (kein Wert).

Muss ich irgendwas mit ner Schleife machen ???? Danke schon mal für eure Hilfe !!!!

Geschrieben
Originally posted by Florian_K

Für deine Ansprüche müsste es also heissen:

preg_replace("@@@.*@@@", "-", $text);

Danach hast du statt der beschriebenen (seltsam markieren) Strings einfache "-".

Wenn der String nur allein in einer Zeile vorkommen kann/darf, dann geht das:

preg_replace("^@@@.*@@@$", "-", $text);

Das "Dach" bezeichnet den Anfang einer Zeile, das "$" das Ende.

DAS GEHT NICHT! ES KOMMT EIN FEHLER:

"Warning: No ending delimiter '^' found in ... "

!!!

Geschrieben

Hui! Also ich glaube ich hab die Lösung:

$text = preg_replace("/@@@(.*)@@@/iUs", "-", $text);

Fragt mich jetzt aber NICHT was das zu bedeuten hat, verstehen tu ich's nicht :D aber es funktioniert :P

Danke euch allen :bimei

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...