1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

geshredderten String wieder zusammensetzten

Dieses Thema im Forum "PHP" wurde erstellt von tklustig, 11. Januar 2018 um 20:16 Uhr.

  1. tklustig

    tklustig Mitglied

    Hallo Leute, durch folgenden Code habe ich einen String geshreddert
    PHP:
    1.         $string = str_replace(";", ";\n", $model->mail_antwortadresse);
    2.                 $model->mail_antwortadresse = $string;
    3.                 $model->save();
    Bedauerlicherweise wird der String durch die nicht sichtbaren Leerzeichen erweitert,was beim Wiederauslesen aus der Datenbank zu Problemen führt(ein Versand an jede einzelne Adresse ist nicht mehr möglich). Ich bräuchten Ihn also wieder in seiner Originalversion,die so war:
    Code (Text):
    1. kipp.thomas@gmx.net;tklustig.thomas@gmail.com;tklustig@web.de
    Wie bekomme ich das am günstigsten hin?
    Hier noch der Code,der jetzt nicht mehr funktioniert:
    PHP:
    1.  $string2Extract = $model->mail_antwortadresse;
    2.                     $extract_outer = explode("'", $string2Extract);
    3.                     $extract_inner = explode(";", $extract_outer[0]);
    4.                     //verschicke die Mail gemäß an die im Array extract_inner genannten Empfänger
    5.                     //eventuell hilft ein var_dump auf das Array bei der Fehlersuche weiter
    6.                     for ($i = 0; $i < count($extract_inner); $i++) {
    7.                         Yii::$app->mailer->compose()->setFrom($model_eingang->mail_adresse_absender)
    8.                                 ->setTo($extract_inner[$i])
    9.                                 ->setSubject($model->betreff)
    10.                                ->setTextBody(strip_tags($model->bodytext))
    11.                                 ->send();
    12.                     }
     
    Zuletzt bearbeitet: 11. Januar 2018 um 20:23 Uhr
  2. merzi86

    merzi86 Erfahrenes Mitglied

    Hallo tklustig

    Die einfachste Variante ist einfach ein Trim auf die Adressen zu machen.
    Bsp:
    Code (PHP):
    1.  $string2Extract = $model->mail_antwortadresse;
    2.                     $extract_outer = explode("'", $string2Extract);
    3.                     $extract_inner = explode(";", $extract_outer[0]);
    4.                     //verschicke die Mail gemäß an die im Array extract_inner genannten Empfänger
    5.                     //eventuell hilft ein var_dump auf das Array bei der Fehlersuche weiter
    6.                     for ($i = 0; $i < count($extract_inner); $i++) {
    7.                         Yii::$app->mailer->compose()->setFrom($model_eingang->mail_adresse_absender)
    8.                                 ->setTo(trim($extract_inner[$i]))
    9.                                 ->setSubject($model->betreff)
    10.                                ->setTextBody(strip_tags($model->bodytext))
    11.                                 ->send();
    12.                     }
    Eine andere wäre mittels RegularExpression die Leerzeichen herausfiltern. Was aber in diesen Fall doch etwas wie ein Overkill wäre.

    Code ist nicht getestet sollte aber funktionieren.
     
  3. tklustig

    tklustig Mitglied

    Wieso funktioniert deine Lösung (ich habe es soeben probiert...) ?
    Lt. Manuals entfernt trim(); whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings.
    Der String wird aber an jedem Semikolon gebrochen. Zur Verdeutlichung:
    Code (Text):
    1. $string=kipp.thomas@gmx.net;."\n".tklustig.thomas@gmail.com;."\n".tklustig@web.de
     
    Zuletzt bearbeitet: 12. Januar 2018 um 01:07 Uhr
  4. merzi86

    merzi86 Erfahrenes Mitglied

    der String ist aber nicht dein Problem.

    Dein Problem war das Leerzeichen nachdem Semikolon, daher hat das Trim den gewünschten Effekt gebracht und dein Skript wieder funktionstüchtig gemacht.


    Um dir das zu Visualisieren Probiere mal das Skript aus:
    Code (PHP):
    1.  $string2Extract = $model->mail_antwortadresse;
    2.                     $extract_outer = explode("'", $string2Extract);
    3.                     $extract_inner = explode(";", $extract_outer[0]);
    4.                     //verschicke die Mail gemäß an die im Array extract_inner genannten Empfänger
    5.                     //eventuell hilft ein var_dump auf das Array bei der Fehlersuche weiter
    6.                     for ($i = 0; $i < count($extract_inner); $i++) {
    7.                               printf("%s", str_replace("\n", "LEERZEICHEN", trim($extract_inner[$i]);
    8.                               printf("%s", str_replace("\n", "LEERZEICHEN", trim($extract_inner[$i]));
    9.                     }
    Ich hoffe ich habe jetzt kein Denkfehler. :)
     
  5. tklustig

    tklustig Mitglied

    Vielen Dank ob Deiner Mühen;)
     
Die Seite wird geladen...