Wie teil eines Strings auslesen?
scripter2000
- php
Hallo,
Ich habe einen riesigen String mit allem möglichen:
X-Mozilla-Status: 0001
X-Mozilla-Status2: 01000000
FCC: mailbox://nobody@Local%20Folders/Sent
X-Identity-Key: id2
Message-ID: 446DB956.9040102@bitplan.com
Date: Fri, 19 May 2006 14:43:51 +0200
From: Maria beispiel@example.com
X-Mozilla-Draft-Info: internal/draft; vcard=1; receipt=0; uuencode=0
User-Agent: Thunderbird 1.5.0.2 (Windows/20060308)
MIME-Version: 1.0
Subject: Mein Betreff
Nun möchte ich das was hinter "Subject:" steht (also "Mein Betreff") rausfiltern, bzw. in einem extra String haben.
Wie mache ich das am besten?
$subject = sscanf($string, 'Subject: %s'); hat leider nicht funktioniert...
Danke!
Hallo,
$subject=[link:http://de3.php.net/manual/de/function.substr.php@title=substr]($string,[link:http://de3.php.net/manual/de/function.strpos.php@title=strpos]($string,'Subject: ')+1);
$subject=substr($ubject,0,strpos($subject,"\n");
Gruß aus Berlin!
eddi
Hallo eddi.
$subject=substr($ubject,0,strpos($subject,"\n");
Müsste es nicht „\r\n“ sein?
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo,
Müsste es nicht „\r\n“ sein?
möglicherweise; aber da keine weiteren Erläuterungen dazu kamen, ist "\n" jedenfalls das Zeilenende, wogegen "\r\n" nicht zwingend enthalten sein muß.
Gruß aus Berlin!
eddi
Hallo eddi.
Müsste es nicht „\r\n“ sein?
möglicherweise; aber da keine weiteren Erläuterungen dazu kamen, ist "\n" jedenfalls das Zeilenende, wogegen "\r\n" nicht zwingend enthalten sein muß.
Auch nicht als Terminator für den Subject-Header?
BTW, dein Code war noch buggy:
$subject = substr($string, strpos($string, 'Subject: ') + 9); # strlen('Subject: ') == 9
$subject = substr($subject, 0, strpos($subject,"\n"));
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo,
Auch nicht als Terminator für den Subject-Header?
Dort schon, wenn es denn ein Header ist.
Ich habe einen riesigen String mit allem möglichen:
Möglicherweise wird dieser String aber von einem sendmail-Ersatzprogramm aufgegabelt, dann ist nicht zwingend "\r\n" enthalten.
BTW, dein Code war noch buggy:
Danke!
Gruß aus Berlin!
eddi
echo $begrüßung;
BTW, dein Code war noch buggy:
$subject = substr($string, strpos($string, 'Subject: ') + 9); # strlen('Subject: ') == 9
$subject = substr($subject, 0, strpos($subject,"\n"));
Das ist er immer noch, zumindest indirekt. Wenn in dem Text keine Subject-Zeile vorkommt - wovon man bei einigen Spam-Mails ausgehen kann - liefert er Teile der ersten Zeile. Das liegt daran, dass das Ergebnis von strpos() ungeprüft weiterverwendet wird. Bei Nichtenthaltensein des Suchbegriffs liefert strpos() false. Das wird von PHP per eingebauter Typumwandlung in ein 0 umgewandelt, und stellt somit für substr() den Stringanfang dar.
echo "$verabschiedung $name";