Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Check bestimmtes Zeichen if " "

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Check bestimmtes Zeichen if " "

    Moin,

    kann man in PHP einen String an einer bestimmten Stelle (z.B. 5) checken, ob er ein Leerzeichen ist und wenn ja, dann ersetze ihn durch eine "0", wenn nein, dann mache nichts.
    Ersetzen mit

    PHP-Code:
    $zeile substr_replace($ozeile"0"5); 
    habe ich schon. Nur das checken, ob die 5. Stelle ein " " ist, kriege ich nicht hin. Habt ihr eine Idee?

    Danke!


  • #2
    PHP-Code:

    $string 
    "Hallo du da wie gehts dir";
    foreach (
    str_split($string) as $value) {
       echo 
    $value."<br>";

    Hatte dich erst falsch verstanden...
    Hier hättest du nun auch die möglichkeit jetzt einzelne Zeichen auf " " abzuprüfen.
    Aber ich denke _cyrix_ Antwort wird dir direkt weiterhelfen
    Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

    Kommentar


    • #3
      Man kann auf zeichen eines strings zugreifen, in dem man ihn wie ein Array behandelt.
      PHP-Code:
      $deinstring 'Hallo Welt';
      echo 
      $deinstring[4]; // o 
      Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

      Kommentar


      • #4
        So wie dein obiger Code jetzt dasteht ersetzt du je nach Inhalt von $ozeile auch mehrere Zeichen. Schau dir substr_replace im Manual an!
        PHP-Klassen auf github

        Kommentar


        • #5
          Musst du unbedingt wissen, wo das Freizeichen ist ?

          Wenn nein, kannst du einfach "str_replace" nutzen.

          PHP-Code:
          $string 'Ich bin ein Haus';
          $str str_replace(" "0$string); 
          Github_Cyrix, Laravelgemeinschaft bei php.de,Laravel Chat

          Kommentar


          • #6
            Und jetzt probieren alle ihre Lösungen mal mit:
            PHP-Code:
            $string "Höhö ich bin so gemein"

            Kommentar


            • #7
              PHP-Code:
              $string "Höhö ich bin so gemein";

              if (
              ' ' === mb_substr($string41'UTF-8')) {
                  
              $string mb_substr($string04'UTF-8') . '0'
                          
              mb_substr($string5null'UTF-8');
              }

              var_dump($string); 
              Glaube, das wäre eine ganz nette Aufgabe fürs PHP-Golf.

              Kommentar


              • #8
                Zitat von mermshaus Beitrag anzeigen
                Glaube, das wäre eine ganz nette Aufgabe fürs PHP-Golf.
                Aber das sieht dann doch kacke aus...
                PHP-Code:
                <?php
                $s
                ="Höhö ich bin so gemein"
                $f="mb_substr";
                $e="UTF-8";
                if (
                ' '===$f($s,4,1,$e)) 
                    
                $s=$f($s,0,4,$e).'0'.$f($s,5,null,$e);


                Aber ja, ist traurigerweise nicht ganz trivial. Aber ich denk mir noch was gutes aus.

                Kommentar


                • #9
                  Danke, es hat mir alles geholfen und ich konnte mein Problem hiermit lösen:

                  PHP-Code:
                  if ($zeile[4] == ' ')
                  {
                      
                  $zeile[4] = '0';

                  Kann "geclosed" werden.

                  Kommentar


                  • #10
                    Wenn dein String Multibyte-Characters enthalten kann (wie etwa deutsche Umlaute in UTF-8), dann ist das keine Lösung.

                    Wenn dein String kürzer als 4 Zeichen sein kann, ist es zumindest keine saubere Lösung.

                    Kommentar


                    • #11
                      Das funktioniert aber nicht, wenn du mit UTF-8 arbeitest und Umlaute in deiner Zeile hast. Probier mal das Beispiel von Tropi "Höhö ich bin so gemein".
                      Auf erledigt klicken kann nur der Threadersteller, du.
                      PHP-Klassen auf github

                      Kommentar


                      • #12
                        Zitat von mermshaus Beitrag anzeigen
                        Wenn dein String Multibyte-Characters enthalten kann (wie etwa deutsche Umlaute in UTF-8), dann ist das keine Lösung.

                        Wenn dein String kürzer als 4 Zeichen sein kann, ist es zumindest keine saubere Lösung.
                        Richtig. Mir ist das mit den UTF-8 Zeichen auch vorhin gekommen. Vielleicht ist deine ganze Denkweise auch falsch. Was willst du damit überhaupt erreichen? Eventuell gibt es eine praktikablere Lösung.
                        Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                        Kommentar


                        • #13
                          Zitat von mermshaus Beitrag anzeigen
                          Wenn dein String Multibyte-Characters enthalten kann (wie etwa deutsche Umlaute in UTF-8), dann ist das keine Lösung.

                          Wenn dein String kürzer als 4 Zeichen sein kann, ist es zumindest keine saubere Lösung.
                          Da es eine Logdatei mit einem immer gleichen Aufbau war und ich aus einem einstelligen Datum (" 1.10.2014") ein zweistelliges "01.10.2014" basteln wollte, ist es eine optimale Lösung für mich.
                          Im darauffolgenden Code trenne ich den String beim " ", daher die eingefügte "0", damit das Array nicht eine versetzte Reihenfolge hat.

                          Besten Dank an alle && hab den Thread als erledigt markiert!

                          Kommentar


                          • #14
                            Sowas kann man auch ohne rumgehacke mit der DateTime-klasse machen...

                            http://php.net/manual/de/class.datetime.php
                            Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                            Kommentar


                            • #15
                              Es liegen wahrscheinlich Einträge in diesem Stil vor:

                              Code:
                              404 10.10.2014 Message 1
                              403  1.03.2015 Message 2
                              Das Ziel ist es, die in einzelne Bestandteile zu zerlegen. Das kann man mit einem explode() am Leerzeichen machen, wenn man irgendwie das überzählige Leerzeichen vor der Tagesangabe in Zeilen wie der unteren los wird.

                              Es gibt vermutlich geschicktere Ansätze. (Und ich habe das Gefühl, dass der aktuelle Ansatz nicht alle Fälle abdecken wird. Einstellige Monatsangaben?) Dazu wissen wir aber zu wenig über das Format.

                              Kommentar

                              Lädt...
                              X