Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] stdClassObjekt nach String durchsuchen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] stdClassObjekt nach String durchsuchen

    Ich sollte wahrscheinlich einen Thread mit meinem Namen öffnen...
    Aber einiges an meinem Wissen ist einfach nicht aufzuarbeiten:

    Wie kann ich ein stdClassObjekt nach einem String durchsuchen?
    In PHP.net Manuals kann ich leider nichts dazu finden?
    Beim Google auch nicht.

    So ich es richtig verstanden habe, ist dies ein 3Dimensionales Array. Mit der Function array_search funktioniert dies leider nicht - folgende Fehlermeldung:
    Warning: array_search() [function.array-search]: Wrong datatype
    for second argument in D:\xampp\htdocs\tazroot\aufbau_mail
    \de_mail.imap_1.php
    on line 118
    Ich möchte gerne aus folgendem Text nur gerne prüfen,
    ob das Wort Attachment oder attachment zu finden ist. Am liebsten mit if(ist in $TEXT zu finden) {ja} {nein}:

    stdClass Object
    (
    [type] => 1
    [encoding] => 0
    [ifsubtype] => 1
    [subtype] => MIXED
    [ifdescription] => 0
    [ifid] => 0
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => boundary
    [value] => 0-452015107-1216306090=:10386
    )


    )

    [parts] => Array
    (
    [0] => stdClass Object
    (
    [type] => 1
    [encoding] => 0
    [ifsubtype] => 1
    [subtype] => ALTERNATIVE
    [ifdescription] => 0
    [ifid] => 0
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => boundary
    [value] => 0-980918426-1216306090=:10386
    )

    )

    [parts] => Array
    (
    [0] => stdClass Object
    (
    [type] => 0
    [encoding] => 4
    [ifsubtype] => 1
    [subtype] => PLAIN
    [ifdescription] => 0
    [ifid] => 0
    [lines] => 4
    [bytes] => 323
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => charset
    [value] => utf-8
    )

    )

    )

    [1] => stdClass Object
    (
    [type] => 0
    [encoding] => 4
    [ifsubtype] => 1
    [subtype] => HTML
    [ifdescription] => 0
    [ifid] => 0
    [lines] => 8
    [bytes] => 699
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => charset
    [value] => utf-8
    )

    )

    )

    )

    )

    [1] => stdClass Object
    (
    [type] => 5
    [encoding] => 3
    [ifsubtype] => 1
    [subtype] => GIF
    [ifdescription] => 0
    [ifid] => 0
    [bytes] => 1158
    [ifdisposition] => 1
    [disposition] => attachment
    [ifdparameters] => 1
    [dparameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => filename
    [value] => working.gif
    )

    )

    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => name
    [value] => working.gif
    )

    )

    )

    [2] => stdClass Object
    (
    [type] => 0
    [encoding] => 3
    [ifsubtype] => 1
    [subtype] => PLAIN
    [ifdescription] => 0
    [ifid] => 0
    [lines] => 32
    [bytes] => 1976
    [ifdisposition] => 1
    [disposition] => attachment
    [ifdparameters] => 1
    [dparameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => filename
    [value] => rcf.txt
    )

    )

    [ifparameters] => 1
    [parameters] => Array
    (
    [0] => stdClass Object
    (
    [attribute] => name
    [value] => rcf.txt
    )

    )

    )

    )

    )
    Solltet Ihr keine Idee haben, werd' ich wohl alles einzeln Abfragen müssen...

    Danke im vorraus


  • #2
    Hallo TAZweb,

    am besten sagst du uns, was du wirklich vorhast.
    Was ist das für ein Objekt, woher kommt diese Ausgabe?
    Für mich klingt das ganze so, als ob du nicht weißt was ein Objekt ist und wie man auf Attribute zugreift....
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      @agrajag: ein stdClass Objekt wird zum Beispiel durch mysql_fetch_object erstellt. Aber du hast recht, er sollte uns sagen was er vor hat...

      Kommentar


      • #4
        Zitat von agrajag Beitrag anzeigen
        Hallo TAZweb,

        am besten sagst du uns, was du wirklich vorhast.
        Was ist das für ein Objekt, woher kommt diese Ausgabe?
        Für mich klingt das ganze so, als ob du nicht weißt was ein Objekt ist und wie man auf Attribute zugreift....
        $array->wert

        Zitat von cycap Beitrag anzeigen
        @agrajag: ein stdClass Objekt wird zum Beispiel durch mysql_fetch_object erstellt. Aber du hast recht, er sollte uns sagen was er vor hat...
        Aber ihr habt recht, ein stdClassObject ist mir bis jetzt noch nicht unter gekommen...

        Ich bin dabei EMails, die per IMAP vom Mailserver (kabelhomepage.de) abzurufen, den Header in eine MySQL-Datenbank abzuspeichern (<- was schon geschehen ist) und den Mailtext ggf. auch die Attachments als Datei abzuspeichern.

        Das Objekt stammt somit aus:
        PHP-Code:
        $PO=@imap_open("{imap.kabelhomepage.de:143}INBOX","Benutzername","Passwort")
         or die
          (
        "
           Verbindung 'de_mail.IMAP@user:pass=true' konnte nicht geoeffnet werden!
           <p id='alert_center'>
        $errorList</p>
          "
        );

        if(
        $PO)
         {
          
        $ifs=imap_fetchstructure($PO,$ex,0);
         }
        /*
        $ex ist die Nachrichtennummer, die per Schleife alle Nachrichten durchgeht
        $ifs ist dann jenes stdClassObjekt, welches ich auslesen kann, aber nicht
        in ihm suchen kann!
        */ 
        Das anzeigen, bzw. abspeichern des Mailtextes klappt zu meiner zufriedenheit,
        in dem ich jeden Part nach den Worten PLAIN bzw. HTML prüfe (die nicht im
        Parameter Attachment stehen haben). Je nach dem dann die Dateiendung txt
        oder htm. Das gleiche gilt auch für Attachments.

        Aber da manch' Mail mit oder eben ohne Attachment gesendet
        wird (und jene ja immer in Unterschiedlichen Parts zu finden sind) will ich
        vorher erst einmal prüfen, ob in jenem imap_fetchstructure Objekt das Wort
        Attachment vorkommt. Somit könnte ich ja die Ladezeit des WebMailers
        extrem verkürzen (sollte kein Attachment zu finden sein) oder eben eine
        suchAttachment.php includen, die dann doch etwas umfangreicher wird.

        Ich weiß...
        Zitat von Nikosch77-new
        "Die dümmsten Programmierer haben die längsten Programme."
        Ich meine einen String, kann mann ja auch nach vorhandenen Wörtern
        prüfen... Das muss doch auch mit einem Objekt gehen?


        Es ist ja nicht so, dass ich kompletter PHP-Neuling bin und mir alles im Web
        kopiere! Meine ersten Quellen sind Bücher wie "Programmieren lernen in PHP4"
        von Jörg Krause oder "PHP4 - Webseiten dynamisch programmieren" von
        Weichselbaum. Zu Objekten finde ich aber leider nur "7.1 Das erste Objekt"
        wo ich eine Klasse schreiben kann, die die Sinnigkeit jener Klasse in Prozent
        und Gif-Balken ausgibt...

        Ich hoffe ich konnte euch Zufrieden stellen und eure Frage beantworten.



        Achso: Das ganze soll ein Selbsläufer sein... Also, wer den WebMailer nutzt und seine Nutzerdaten auf der eigentlichen WebSite eingegeben hat, wird so nebenbei gleich mal alle Nachrichten vom Server abrufen und entsprechend speichern! Deswegen muss ich mir ja sicher sein, dass alles klappt, bzw. so kurze Ladezeiten wie möglich erreichen!

        Kommentar


        • #5
          Wenn dir eine Funktion nun true oder false liefert, weisst du immer noch nicht wo sich das Attachment befindet. Du musst schon selbst wissen wo du suchen willst. Andernfalls durchsuchst du vielleicht den Nachrichtentext oder andere irrelevante Eigenschaften, die den Wert aber durchaus enthalten könnten.

          PHP: property_exists - Manual

          Falls nicht kannst du dein stdClass Objekt aus ganz normal als Array casten, falls das fuer dich einfacher ist.

          PHP-Code:
          <?php
          foeach 
          ($stdClassObject as $property => $value) {
           
          // ..
          }
          ?>

          Kommentar


          • #6
            Zitat von ElPresidente Beitrag anzeigen
            Wenn dir eine Funktion nun true oder false liefert, weisst du immer noch nicht wo sich das Attachment befindet.
            Stimmt... Das Attachment würde ich finden, aber die Suche würde Ladezeit der Seite in Anspruch nehmen. Würde das schon mit string-funktionen rauskriegen ob parameter -> attachment und value->filename ist. Erst dann soll das array hinsichtlich der Attachment inhalte aufgelöst werden.

            Die Klassen- und Objekt-Funktionen werd ich mir mal zu Gemüte führen.

            Melde mich ob' klappt oder nicht...

            Danke Dir

            mfg TAZweb

            Kommentar


            • #7
              Nun ja...

              Die proberty_exist() führt nicht ganz zum gewünschtem Ergebniss...

              Sie liefert WAHR wenn eine Eigenschaft vorhanden ist, aber leider nur auf oberster Ebene. Ich könnte mit dieser Funktion die Klasse auch auserinandernehmen, aber da würde ich , glaube ich, auf's gleiche Ergebniss kommen, wie mit IF-Abfragen ob disposition->attachment==TRUE

              Danke trotzdem...

              WebMailer ist so gut wie fertig. Sicher noch etwas instabil, aber ich werd' mir soviel wie möglich Mails mit Attachments schicken, das ich das Ding schon hinbekomme!!!

              DANKE


              Gruß TAZARD!

              Kommentar

              Lädt...
              X