Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

@@@blabla@@@ ersetzen - wie ???

Empfohlene Antworten

Veröffentlicht

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 !!!!

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().

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

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.

*blatsch* Stimmt! Die Bedetung vom ^ hatte ich verdrängt.

Wie stehts denn jetzt mit der Lösung des Problems? Fehlt noch was? ;)

  • Autor

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 !!!!

  • Autor
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 ... "

!!!

  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.