Ergebnis 1 bis 8 von 8

Thema: Alternative für split in PHP 7

  1. #1
    König(in)
    Registriert seit
    13.06.2012
    Beiträge
    1.314
    Danke
    17
    Bekam 72 mal "Danke" in 70 Postings

    Standard Alternative für split in PHP 7

    Hallo,
    habe mal eine Frage zu PHP 7. Ab dieser Version wurde ja split abgeschafft. Nun habe ich ein Erinnerungsscript, welches noch mit split arbeitet, seit Jahren mit einer älteren PHP-Version anstandlos läuft. Es wird per Cronjob täglich 1x gestartet und schickt mir mit dem PHP-Mailer eine Erinnerungsmail, wenn es etwas wie einen Geburtstag o.ä. gibt.

    Da ich PHP nicht wirklich kann (mehr zusammenpappe), verstehe ich manche Anleitungen nicht. Was ich gelesen habe arbeitet meist so, dass ein Array zurückgegeben wird. Was ich benötige ist aber kein Array, sondern nur drei einzelne Variablen.

    Codeschnipsel:
    PHP-Code:
    list($vname$name$date) = split('[;]'$buffer); 
    In $buffer befindet sich eine Zeile aus einer Textdatei, welche dieses Format hat und vorher eingelesen wurde.

    Reiner;Müsal;12.3.1956
    Durch den alten split-Befehl hatte ich dann drei Variablen, 1x Vorname ($vname), 1x Nachname ($name) und das Geburtsdatum ($date).
    Das habe ich jetzt mit explode versucht, bekomme dann aber die Fehlermeldung:

    Notice: A non well formed numeric value encountered in...
    Fragen:
    Wie müsste eine alternative Zeile zu meiner Splitzeile aussehen, welch anderer Befehl?
    Gibt es einen anderen Weg die Fehlermeldung mit explode zu vermeiden, z.B. anderes Format des hinterlegten Datums?

    Ich freue mich auf Antworten, in der Hoffnung die zu verstehen
    Danke für die Aufmerksamkeit
    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

  2. #2
    Großmeister(in)
    Registriert seit
    24.10.2016
    Beiträge
    604
    Danke
    0
    Bekam 45 mal "Danke" in 44 Postings

    Standard AW: Alternative für split in PHP 7

    PHP-Code:
    <?php

       $buffer 
    "Reiner;Müsal;12.3.1956";
       
       list(
    $vname$name$date) = explode(';'$buffer);
       
       echo 
    "$vname$name$date";
    ?>

  3. #3
    König(in)
    Themenstarter

    Registriert seit
    13.06.2012
    Beiträge
    1.314
    Danke
    17
    Bekam 72 mal "Danke" in 70 Postings

    Standard AW: Alternative für split in PHP 7

    Ich muss mir die Keule auf den Kopf schlagen. Ich Dussel hatte die Zeilennummern im Notepad++ aus. Die eigentliche Fehlermeldung bezieht sich wohl auf eine Berechnung. Da ich nur split gegen explode getauscht habe, nahm ich an es liegt daran. Ich lerne dazu, geil.
    Sorry dafür. Dennoch vielen Dank bis hier hin.

    Ich habe $date in $datum umbenannt, sonst stiftet es Verwirrung mit date!

    Nachdem ich alle Variablen habe, will ich das Alter der Person errechnen. Dazu zerlege ich das $datum nochmal, um das Jahr alleine zu haben, hier also 1956. Klappt soweit.

    Die Ausgabe mit...
    PHP-Code:
    echo "$diesjahr $jahr"
    ...ergibt richtig:
    2018 1956
    Wenn ich jetzt 2018 - 1956 rechne...
    PHP-Code:
    $alter $diesjahr $jahr
    ... kommt die Fehlermeldung:
    Notice: A non well formed numeric value encountered in
    Das hat unter bisherigen PHP-Versionen und mit split immer funktioniert. Jetzt mit PHP 7 und mit explode nicht mehr.



    Kann es sein, dass eine der beiden Variablen (die 1956) keine Zahl, sondern ein String ist, mit dem sich eben nicht numerisch rechnen lässt?

    Hier mal der relevante Zerlegungscode:
    PHP-Code:
    $buffer "Reiner;Müsal;12.3.1956";                 // eingelesene Zeile aus der Datei

    list($vname$name$datum) = explode(';'$buffer);// Zeileninhalt in Variablen splitten
    list($tag$monat$jahr) = explode("."$datum);   // Datum zerlegen

    echo "$vname$name$datum<br>";                   // Zwischenausgabe, alles okay

    $diesjahr date("Y");                              // eben dieses Jahr als Zahl

    echo "$diesjahr $jahr <br>";                        // Zwischenausgabe 2018 und 1956, sieht alles okay aus

    $alter $diesjahr $jahr;                         // Hier kommt die Fehlermeldung 
    Wie bekomme ich aus $jahr (meine Vermutung Stringinhalt) eine numerische Variable, also Zahl?

    Auch hier wieder, vielen Dank für die Aufmerksamkeit und Hilfe.
    MfG
    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

  4. #4
    Großmeister(in)
    Registriert seit
    24.10.2016
    Beiträge
    604
    Danke
    0
    Bekam 45 mal "Danke" in 44 Postings

    Standard AW: Alternative für split in PHP 7


  5. #5
    König(in)
    Themenstarter

    Registriert seit
    13.06.2012
    Beiträge
    1.314
    Danke
    17
    Bekam 72 mal "Danke" in 70 Postings

    Standard AW: Alternative für split in PHP 7

    Den Hinweis verstehe ich nicht. Was möchtest du mir damit sagen?
    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

  6. #6
    Meister(in)
    Registriert seit
    27.07.2015
    Ort
    Nordseeküste
    Beiträge
    336
    Danke
    0
    Bekam 75 mal "Danke" in 75 Postings

    Standard AW: Alternative für split in PHP 7

    Wenn es, wie du vermutest, daran liegt dass $diesejahr und/oder $jahr als String-Variable diesen Fehler verursacht, könntest du versuche mit intval($aviable) daraus ein Integer zu machen.
    http://php.net/manual/de/function.intval.php
    PHP-Code:
    if(!sleep)
      {
    $sheep++;}
    else
      {
    $status="zzzz";} 

  7. #7
    Großmeister(in)
    Registriert seit
    24.10.2016
    Beiträge
    604
    Danke
    0
    Bekam 45 mal "Danke" in 44 Postings

    Standard AW: Alternative für split in PHP 7

    Zitat Zitat von Gastl Beitrag anzeigen
    Was möchtest du mir damit sagen?
    Dass deine Altersberechnung falsch ist. Am 1.1.2019 ist dein Reiner schon 63 und das stimmt dann nicht. Richtig berechnen kannst du das mit der verlinkten Funktion zur Doku

  8. #8
    König(in)
    Themenstarter

    Registriert seit
    13.06.2012
    Beiträge
    1.314
    Danke
    17
    Bekam 72 mal "Danke" in 70 Postings

    Standard AW: Alternative für split in PHP 7

    Ich lag mit meiner Vermutung richtig. $jahr war wohl ein String, umgewandelt mit deinem Hinweis intval und schon klappt es. Die Berechnung funktioniert wieder, Fehlermeldung bleibt aus. Warum früher mit split eine numerische Variable und mit explode eine Stringvariable gebildet wird, muss ich noch lesen.

    Jetzt muss ich wieder den PHP-Mailer zum versenden bringen, der geht auch nicht mehr.

    Vielen lieben Dank

    - - - Aktualisiert - - -

    Zitat Zitat von Bandit Beitrag anzeigen
    Dass deine Altersberechnung falsch ist. Am 1.1.2019 ist dein Reiner schon 63 und das stimmt dann nicht. Richtig berechnen kannst du das mit der verlinkten Funktion zur Doku
    Die Berechnung, jetzt mit intval ist aber richtig. Mein Reiner ist am 1.1.2019 noch nicht 63, weil die Berechnung erst einen Tag vor seinem Geburtstag durchgeführt (tägliches Script mit Crontab) wird und mir dann erst, einen Tag vorher seinem Geburtstag eine Mail mit dem Inhalt zugeschickt wird, der da ist:

    Morgen hat Reiner Müsal, geboren 1956, Geburtstag, er wird 63 Jahre alt.


    Also alles korrekt und richtig.

    Trotzdem danke, dass du mitgedacht hast
    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

Ähnliche Themen

  1. Alternative
    Von Klaus202 im Forum Off Topic und Quasselbox
    Antworten: 1
    Letzter Beitrag: 01.09.2013, 12:57
  2. #split HMTL, CSS bzw. vielleicht auch jQuery Problem
    Von jouunas im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 09.03.2012, 10:11
  3. Alternative
    Von Petra-4 im Forum Computer - Internet Forum
    Antworten: 1
    Letzter Beitrag: 31.08.2007, 00:23
  4. I Pod Alternative
    Von blouis im Forum Off Topic und Quasselbox
    Antworten: 8
    Letzter Beitrag: 06.06.2007, 16:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •