Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Fragen / Anregungen zur DP (https://www.delphipraxis.net/29-fragen-anregungen-zur-dp/)
-   -   Absender der eMail (https://www.delphipraxis.net/631-absender-der-email.html)

Daniel 16. Aug 2002 07:24

Zitat:

Zitat von Luckie
Augen auf Chef:
In der unteren zeile sind eckige Klammern drin und irgendwo am Anfang noch ein Fragezeichen.

Ahem ... Luckie... also es ist so:
Betrachten kann ich mir die Zeilen selber. Und dabei bin sogar ich in der Lage, die formalen Unterschiede festzustellen. :mrgreen: Ich habe mich offenbar ungenau ausgedrückt:
Was mich eigentlich interessierte, war die Antwort auf die Frage, was diese beiden Zeilen eigentlich genau machen.
Auf den ersten Blick scheint es sich um reguläre Ausdrücke zu handeln, und um das Suchen und Ersetzen von Zeichenektten.
Aber kann mir das mal einer genau aufdröseln, was da gesucht wird, und wodurch es ersetzt werden soll?


Grüße,
Daniel

Luckie 16. Aug 2002 07:32

Mist, ich wußte doch dass es eine Fangfrage war. :twisted:

Chewie 16. Aug 2002 10:34

Zitat:

Zitat von Daniel
Fehler lokalisiert und behoben. Ich habe nur nicht verstanden, was da falsch ist. Kann mit mal einer den Unterschied zwischen den folgenden Zeilen erklären:
Code:
preg_match("/^(Subject:(.*?)(?:\r\n)+?)?(Charset:(.*?)(?:\r\n)+?)?(.*?)$/is", $this->msg, $match);

preg_match("/^(Subject:(.*?)[\r\n]+?)?(Charset:(.*?)[\r\n]+?)?(.*?)$/is", $this->msg, $match);

So ganz versteh ich den auch nicht, aber zunächst einmal ist der Unterschied, dass oben ?:\r\n und unten [\r\n] steht. Beim unteren steht der Zeilennumbruch also in eckigen Klammern und bildet somit eine Charakterklasse. Was das genau ist,m weiß aich auch nicht, aber eigentlich sollten die beiden Steuerzeichen innerhalb und außerhalb einer Charakterklasse das selbe tun, deswegen denk, ich, dass sie eckigen Klammern nicht notwendig sind.
Es kommt wohl nur auf ?: an. Was das am Anfang einer Klammer bedeutet, wird so erklärt:

Zitat:

Zitat von PHP-Manual
For example, if the string "the red king" is matched against
the pattern

the ((red|white) (king|queen))

the captured substrings are "red king", "red", and "king",
and are numbered 1, 2, and 3.

The fact that plain parentheses fulfil two functions is not
always helpful. There are often times when a grouping sub-
pattern is required without a capturing requirement. If an
opening parenthesis is followed by "?:", the subpattern does
not do any capturing, and is not counted when computing the
number of any subsequent capturing subpatterns. For example,
if the string "the white queen" is matched against the
pattern

the ((?:red|white) (king|queen))

the captured substrings are "white queen" and "queen", and
are numbered 1 and 2. The maximum number of captured sub-
strings is 99, and the maximum number of all subpatterns,
both capturing and non-capturing, is 200.

Ich versteh es nicht so ganz genau, aber vielleicht hilft das denjenigen etwas, der das oben angesprochene Problem verstehen will. Und wer noch mehr lesen will: http://www.php.net/manual/de/pcre.pattern.syntax.php

Daniel 16. Aug 2002 10:41

Danke für Deine Antwort! Mal abgesehen davon, dass ich mir dieses Thema an einem langen Winterabend einmal in Ruhe zu Gemüte führen muss, betrachte ich dieses Problem als gelöst. :P


Grüße,
Daniel

sakura 16. Aug 2002 14:20

Nette Regular Expressions:
Code:
preg_match("/^(Subject:[color=#ff0000](.*?)(?:\r\n)[/color]+?)?(Charset:(.*?)(?:\r\n)+?)?(.*?)$/is", $this->msg, $match);

preg_match("/^(Subject:[color=#ff0000](.*?)[\r\n][/color]+?)?(Charset:(.*?)[\r\n]+?)?(.*?)$/is", $this->msg, $match);
Ich bin nicht wirklich dingfest mit den Regular Expressions, aber folgender Unterschied wird gemacht.

Variante 1: (.*?)(?:\r\n)

/^ - Der Text fängt an mit Subject: geht weiter mit X beliebigen Zeichen ausser Zeilenumbruch .* und geht weiter mit einem beliebigen Zeichen ? und noch einem beliebigen Zeichen ? und einem Doppelpunkt : gefolgt von einem Zeilenumbruch \r\n und mindestes + einem weiteren beliebigen Zeichen ?

--> Kurz, die Zeile müsste folgenden Aufbau treffen (Ein Doppelpunkt zuviel):
Subject:yyyyy:\r\ny

Variante 2: (.*?)[\r\n]

/^ - Der Text fängt an mit Subject: geht weiter mit X beliebigen Zeichen ausser Zeilenumbruch .* und wird durch einen Zeilenumbruch (#13 od #10) \r\nabgeschlossen - halt eine normalen Subject Line.

--> Kurz, die Zeile müsste folgenden Aufbau treffen:
Subject:yyyyy:\r\n

Chewie 16. Aug 2002 16:04

Zitat:

Zitat von sakura
... und noch einem beliebigen Zeichen ? und einem Doppelpunkt : ...

Ich glaub, hier liegst du falsch. Die Kombination (?: bedeutet nicht beliebiges Zeichen und Doppelpunkt, sondern bewirkt etwas mit dieser Klammer. Was genau, steht bei dem Link, den ich oben gepostet hab, im Abschnitt subpatterns. Aber was das genau bedeutet, hb ich nicht so genau verstanden. Vielleicht tust dus ja.

sakura 16. Aug 2002 16:10

Ich glaube, ich liege richtig :wink:

(___) erstellt ein "Sub-Query", als erstes in dieser Subquery kommt ein beliebieges Zeichen ? und anschließend ein Doppelpunkt :. Ich habe die Klammern im letzten Posting nicht namentlich angeführt, sollte aber jeweils die richtige Gruppierung beibehalten haben.

@Daniel: Ich bekomme endlich wieder E-Mails...

theomega 16. Aug 2002 16:15

Also ich habe mal an alle ein Frage:
ich habe ja was ganz anderes gefragt, als dass über dass ihr hier debatiert. Ich wollte nur wissen warum der Absender der eMail so komisch ist. Was ihr da besprecht ist doch was ganz anderes.

BTW: Inzwischen passt der Absender wieder.

Luckie 16. Aug 2002 16:15

Ich auch, ich auch, ich auch. Also ich bekomme auch wieder welche.

Das hängt wohl damit zusammen, enke ich.

sakura 16. Aug 2002 16:19

@theomega: Bei mir ist der Absender (wieder) richtig. Der Grund war wohl die eine Zeile im Skript.

Später waren wir dann nur noch auf die Unterschiede dieser eingegangen.

Stimmt Dein Absender jetzt :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz