If Abfrage verschönern, Encoding Problem bei File_Put_Contents

  • PHP

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Chrisber.

    If Abfrage verschönern, Encoding Problem bei File_Put_Contents

    Hallo,

    weil Php Sachen ja meistens klein sind, dachte ich, ich könnte direkt 2 Probleme in einem Thread ansprechen..

    1.

    Erstmal hab ich hier eine ziemlich lange if Abfrage..

    PHP-Quellcode

    1. if (strlen($Acc) >= 3 && strlen($Acc) <=15 && preg_match('%^[a-zA-Z\d_-]+$%', $Acc) && strlen($Pass) >= 6 && preg_match('%\d%', $Pass) && preg_match('%[a-zA-Z]%', $Pass)) {


    Kann man die irgendwie schöner lösen?



    2.

    Ich schreibe mit File_Put_Contents in eine Textdatei(vorher wird der Dateinhalt mit File_Get_Contents ausgelesen.

    Die TextDatei beinhaltet ca. 120.000 Zeichen.

    Jetzt habe ich das Problem, dass in der Textdatei Zeichen wie äöü nicht richtig dargestellt werden,
    ö wird z.B zu ö

    Leider hab ich jetzt keinen Parameter für das Encoding gefunden.

    Gibts in Php nicht auch sowas wie Encoding.Type(String) ?
    Speichere strlen($Acc) schonmal in einer lokalen Variable, so wird der gleiche Wert 2 mal ausgewertet, was ziemlich unschön und ineffizient ist.
    "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
    Paul Thurrott

    PHP-Quellcode

    1. if (preg_match('%^[a-zA-Z\d_-]{3,15}$%', $Acc) && strlen($Pass) >= 6 && preg_match('%[0-9a-zA-Z]%', $Pass))
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Aufbauend auf dem von @Chrisber:, kannst du noch die $Pass in das Regex-Pattern rein nehmen:

    PHP-Quellcode

    1. if (preg_match('%^[a-zA-Z\d_-]{3,15}$%', $Acc) && preg_match('%[0-9a-zA-Z]{6,}%', $Pass))


    Die Bedingung oben ist etwas anders als gedacht:

    PHP-Quellcode

    1. strlen($Pass) >= 6 && preg_match('%\d%', $Pass) && preg_match('%[a-zA-Z]%', $Pass)
    2. */
    3. $Pass:
    4. - Mindestens 6 Chars
    5. - muss eine Zahl enthalten
    6. - muss einen Buchstaben enthalten
    7. */


    Bei Chrisbers und meiner Abfrage fehlt die 2. Bedingung aber. Bei uns kann $Pass eine Zahl (oder mehrere) und sie kann einen (oder mehrere) Buchstaben enthalten. Das ist nicht ganz das gleiche.

    Zum Encodingproblem:
    Vielleicht hilft dir ja utf8_decode bzw encode.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „nikeee13“ ()

    nikeee13 schrieb:

    Vielleicht hilft dir ja utf8_decode bzw encode.

    Danke.

    Das mit dem Pattern für $Acc hab ich verpeilt, hab irgendwie nicht dran gedacht xD
    Das Encoding Problem ist gelöst.

    Jetzt wäre nur noch das mit dem Pass offen.



    Chrisbers Bedingung passt doch, oder?

    && strlen($Pass) >= 6 && preg_match('%[0-9a-zA-Z]%', $Pass))

    Ob eine Zahl und einen Buchstaben enthält und die Stringlänge größer oder gleich 6 ist ? Passt doch.



    Meine Bedingung sagt aber nur aus, ob ENTWEDER Buchstaben ODER Zahl oder beides eingegeben wurde. Du willst aber (laut deiner Ausgangsfrage) erreichen, dass du mindestens eine Zahl und einen Buchstaben hast.
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.