Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] 2 Zeichen in einem String löschen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] 2 Zeichen in einem String löschen

    Hallo,

    ich möchte gerne in einem String die ersten beiden 2 Zeichen löschen, falls sie die Zeichenfolge " ," (Freizeichen, Komma) haben. Die Zeichenfolge kann im weiteren Stringverlauf mehrmals auftreten, soll aber nur am Anfang gelöscht werden. Daher kann ich sie nicht mit str_replace ersetzen.

    Wie kann ich das realisieren?

    Gruß Klaus

  • #2
    Zitat von klaus25 Beitrag anzeigen
    Wie kann ich das realisieren?
    Z.B. mit http://www.php.net/manual/en/function.preg-replace.php
    ^ steht bei Regulären Ausdrücken für den Stringanfang.

    Kommentar


    • #3
      Z.B. mit ltrim. Ein Freizeichen gibts übrigens am Telefon. Du meinst wohl eher Space, das Leerzeichen.

      Kommentar


      • #4
        kannst du mir mal ein Beispiel dazu machen?
        die Funktion preg_replace habe ich mir heute Mittag schon mal angesehen, werden daraus nicht schlau.
        Ist die Funktion nicht nur für Array?

        Gibt es evtl auch eine Funktion, dass alles vor dem ersten Buchstaben gelöscht wird?

        Kommentar


        • #5
          ich möchte gerne in einem String die ersten beiden 2 Zeichen löschen, falls sie die Zeichenfolge " ," (Freizeichen, Komma) haben. Die Zeichenfolge kann im weiteren Stringverlauf mehrmals auftreten, soll aber nur am Anfang gelöscht werden. Daher kann ich sie nicht mit str_replace ersetzen.
          http://de2.php.net/manual/de/function.preg-replace.php
          Da muss man sich allerdings schon ein wenig einarbeiten.

          Gibt es evtl auch eine Funktion, dass alles vor dem ersten Buchstaben gelöscht wird?
          http://php.net/manual/de/function.trim.php

          Kommentar


          • #6
            Zitat von nikosch Beitrag anzeigen
            Z.B. mit ltrim.
            Hatte ich verworfen, da dies ggf. auch mehr als die ersten beiden Zeichen entfernen würde, aber wahrscheinlich hast du Recht und es ist ausreichend.

            Kommentar


            • #7
              Spontan würde ich als Suchpattern folgendes benutzen:

              ~^([:space:],).~"i oder wenn das nicht klappt: ~^([:space:]\,).~"i

              Schau dir noch http://regexp-evaluator.de/tutorial/ an sowie http://regexp-evaluator.de/tutorial/.../preg-replace/

              Kommentar


              • #8
                Wenn sichergestellt ist, daß nach Space und Komma kein Space oder Komma folgen kann, ist die von nikosch vorgeschlagene Variante mit ltrim optimal. Sind solche Varianten wie im folgenden Beispiel möglich, gibt es neben preg_replace noch diese einfache Variante mit substr :
                PHP-Code:
                $s ' ,, abc ,def';
                if(
                substr($s,0,2) == ' ,'$s substr($s,2); 
                Edit:
                Zitat von klaus25 Beitrag anzeigen
                Gibt es evtl auch eine Funktion, dass alles vor dem ersten Buchstaben gelöscht wird?
                Das würde ich dann mit preg_replace machen.

                Kommentar


                • #9
                  Zitat von klaus25 Beitrag anzeigen
                  kannst du mir mal ein Beispiel dazu machen?
                  die Funktion preg_replace habe ich mir heute Mittag schon mal angesehen, werden daraus nicht schlau.
                  Ist die Funktion nicht nur für Array?

                  Gibt es evtl auch eine Funktion, dass alles vor dem ersten Buchstaben gelöscht wird?
                  preg_replace ist ein gott unter den stringfunktionen hier kannst du dank regulären ausdrücken, praktisch alles ersetzen was du willst und wie du willst.
                  preg_replace ersetzt in einem string etwas und gibt ein string zurück. Wenn du aber keine kenntnisse hast von den Regulären ausdrücken, dann ist es ggf. nicht die schnellste lösung für dich im moment. Du solltest dich aber unbedingt damit auseinandersetzen. dort wo ein str_replace aufhört an möglichkeiten, beginnt preg_replace


                  Wie bereits erwähnt könnte ltrim dir helfen ansonsten. -> Weil ich mal so frei war, habe ich dir hier auf die schnelle ein funktionierendes Beispiel gemacht. (berücksichtigt aber umlaute noch nicht)

                  PHP-Code:
                  $str '! /6?-345;  Hallo!';

                  //nun das legendäre preg_replace
                  $str preg_replace('/^[^a-zA-Z]*(?=[a-zA-Z])/is','',$str); 
                  /*
                  1. regexp. was suchen?
                  2. durch was ersetzen?
                  3. welcher string?
                  */

                  echo '<hr>'.$str.'<hr>'
                  vernichtet jedes zeichen, was kein buchstabe ist, bis ein buchstabe folgt, aber nur am anfang.

                  Kommentar


                  • #10
                    Danke für die Unterstützung,

                    habe es mit preg_replace, wie in dem Beispiel beschrieben gelöst.
                    Die Funktionweise "suchen-ersetzen in dem String" habe ich soweit verstanden.
                    Vielleicht kann mir noch kurz einer erläutern wie ich die den Suchtext "/^[^a-zA-Z]*(?=[a-zA-Z])/is" zu verstehen haben, bzw. wo ich dazu etwas nachlesen kann. Ich wußte bisher nicht, dass man als Suchkriterium diese "Formel" eingeben kann. Bin davon ausgegangen, dass dort nur exakte Begriffe, also 1:1 Ersetzungen, zulässig sind.

                    Kommentar


                    • #11
                      [MAN]preg_replace[/MAN] Eben dort. Genauer im übergeordneten Kapitel PCRE. Finde ich eigentlich naheliegend.

                      Kommentar


                      • #12
                        Zitat von klaus25 Beitrag anzeigen
                        ... wo ich dazu etwas nachlesen kann...
                        Ich finde auch diese Seite ziemlich gelungen http://regexp-evaluator.de/tutorial/

                        Natürlich findest Du mit zB Google auch Tonnen anderer Beispiele / Tutorials.

                        Kommentar


                        • #13
                          Zum Verständnis sei noch angemerkt, daß das RegEx im Beispiel nicht optimal ist (z.B. Assertion überflüssig, a-zA-Z in Verbindung mit i-Modifier).

                          Kommentar


                          • #14
                            Zitat von jspit Beitrag anzeigen
                            (z.B. Assertion überflüssig, a-zA-Z in Verbindung mit i-Modifier).
                            Genau, stimmt. Hat mich selber irgendwie auch seltsam gedeucht, dass es nicht ohne assertion gehen sollte. Daher hier das ganze etwas ausgereifter und kürzer.
                            Beispiel Version 2:

                            PHP-Code:
                            <?
                            $str = '! /6?-345;  Öttel sagt Hallo!';

                            $str = preg_replace('/^[^a-zäöü]*/is','',$str);
                            echo '<hr>'.$str.'<hr>';
                            ?>
                            Hier auch von mir ein empfehlenswerter lieblingslink dazu:
                            http://de.selfhtml.org/perl/sprache/regexpr.htm
                            (da preg_replace ja schliesslich perl kompatibel ist. ) Die Seite zeigt auf einen Schlag praktisch alles was es so gibt. Einfach die persyntax ignorieren. die seite ist zwar uralt, aber echt gut zum nachschlagen. zu min. ca 90% kompatibel. Die Sachen die etwas anders sind oder die es in php nicht gibt sind hier gelistet:
                            reference.pcre.pattern.differences.php

                            Kommentar

                            Lädt...
                            X