Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#13
  Alt 16. Aug 2002, 10:34
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 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
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat