Homer J: Werte aus Array entfernen

Hallo!

Ich zerlege einen String in ein Array:

  
$zeilen = split(" ",$zeilen);  

Ich möchte aus diesem Array alle Leerzeichen entfernen. Unset scheint ab PHP 4 nicht mehr zu "funktionieren" oder habe ich das (mit sicherheit) flasch verstanden?!

Hier gäbe es auch eine Lösung [url]http://www.iphosting.ch/index.php?content=schnipsel&id=11[/url], aber ich möchte das Array nicht unbedingt nochmal durchlaufen. Gibt es da nicht eine einfacherer Lösung?

Gruß
Homer J

  1. Hi,

    warum nimmst du nicht gleich explode()?
    http://ch2.php.net/manual/de/function.explode.php

    Gruss
    Michael

    1. Hallo!

      explode() habe ich jetzt mal probiert, Leerzeichen werden aber immer noch mit in das Array gepackt?!

      Gruß
      Homer J

      1. Hi,

        mit explode(' ', $string) sollten eben keine Leerzeichen mehr da sein (da das Trennzeichen nicht im Ergebnis auftaucht), wohl aber kann das Ergebnis *leere* strings enthalten (wenn zwei leerzeichen aufeinanderfolgten). Wenn du die auch loswerden willst, musst du wohl oder übel noch einmal durchlaufen und diese entfernen, oder du killst sie schon vorher:

        // alle "X" duch Leerzeichen ersetzen, X nur damit man besser erkennt wo ZWEI sind :)
        while (false!==strpos($string, 'XX')) {
            $string = str_replace('XX', 'X', $string);
        }
        $array = explode('X', $string);

        Gruss
        Michael

        1. Hi!

          Ich hätte mein Vorhaben besser direkt besser beschrieben ;-)

            
          //Inhalt einer Datei in ein String packen  
          $zeilen = file_get_contents($res);  
            
          //html Code wird umgewnadelt  
          $zeilen = html_entity_decode($zeilen);  
            
          /HTML und PHP Tags werden entfernt  
          $zeilen = strip_tags($zeilen);  
            
          
          

          Nun habe ich einen String mit leeren Zeilen, ich benötige jetzt nur das übrig gebliebene. Da ich keinen anderen Weg sah, dachte ich mir den String mit split()ein Array zu packen und dann die leeren Werte rauszunehemen. Vorher hatte ich das etwas anders aufgebaut, die Datei mit file() eingelesen, doch dann funktionierte strip_tags() nicht richtig.

          1. Hallo,

            Nun habe ich einen String mit leeren Zeilen, ich benötige jetzt nur das übrig gebliebene. Da ich keinen anderen Weg sah, dachte ich mir den String mit split()ein Array zu packen und dann die leeren Werte rauszunehemen. Vorher hatte ich das etwas anders aufgebaut, die Datei mit file() eingelesen, doch dann funktionierte strip_tags() nicht richtig.

            Erm, also du willst *doppelte Zeilenumbrüche* entfernen und nicht doppelte *Leerzeichen*, ja?

            Probier das:
            $zeilen = file_get_contents($res);
            $zeilen = html_entity_decode($zeilen);
            $zeilen = strip_tags($zeilen);
            // carriage return entfernen
            $zeilen = str_replace("\r", '', $zeilen);
            // doppelte zeilenumbrüche weg
            while (false!==strpos($zeilen, '\n\n')) {
                $zeilen = str_replace("\n\n", "\n", $zeilen);
            }
            // wenn statt dessen *alle* zeilenumbrüche weg sollen ersetz das while(){...} durch:
            // $zeilen = str_replace("\n", '', $zeilen);

            Es würde helfen wenn du genau sagst wie das *Ergebnis* aussehen soll ;)

            Gruss
            Michael

            1. Hi!

              Leider wurde gar nichts entfernt?! Bei der while Schleife, war ich eh schon skeptitch, weil es ja ein String ist.

              Das Ergebnis oder Ziel ist. Datei einlesen ohne Code, dann am besten in Zeile für Zeile nach einem Wort schauen und wenn in der Zeile das Wort gefunden wurde, einen Link ausgeben.

              Gruß
              Homer J

              1. Hi,

                Leider wurde gar nichts entfernt?! Bei der while Schleife, war ich eh schon skeptitch, weil es ja ein String ist.

                Ops, ja da ist ein Fehler drin ;( Ich habe einfach statt doppelter Anführungszeichen gemacht, in einfachen interpretiert PHP die \r und \r anders, statt:
                while (false!==strpos($zeilen, '\n\n')) {...}
                muss es so sein:
                while (false!==strpos($zeilen, "\n\n")) {...}

                Das Ergebnis oder Ziel ist. Datei einlesen ohne Code, dann am besten in Zeile für Zeile nach einem Wort schauen und wenn in der Zeile das Wort gefunden wurde, einen Link ausgeben.

                Willst du einfach nur wissen ob ein bestimmtes wort vorkommt, oder an welcher Stelle es steht? Einfach nur festellen ob das Wort vorkommt kannst du mit strpos() (müsstest nicht mal unbedingt die Tags rauswerfen, ausser das Wort selbst kann im Tag vorkommen):
                if (false!==strpos($zeilen, $wort)) {
                   echo $wort.' gefunden!';
                }

                Ich denke du willst eine Art "Suche in meiner Seite" realisieren, ja?
                Dann würde ich mir den ganzen Kram sparen und sowas machen:
                $zeilen = file_get_contents($name);
                $zeilen = str_replace($wort, '<b>'.$wort.'</b>', $zeilen);
                echo $zeilen;

                Das würde alle Vorkommnisse von $wort in Fettschrift markieren :P (das <b> und </b> kannst du natürlich auch mit was schönerem ersetzen, z.B. mit <a href="link"> und </a> und dann würde jedes Wort zum Link etc.)

                Gruss
                Michael

                1. Hi!

                  Der ganze Text der Datei ist ja in einem String, daher kann ich die Schleife nicht anwenden. Es ist ein Teil eines Suchscripts, aber es werden alle Dateien nach dem Wort durchsuchtm bei Erfolg soll die Zeile mit dem Wort als Link ausgegeben werden, wobei auf Datei verlinkt wird.

                  Gibt es keine andere möglichkeit, HTML und PHP Code aus der Datei zu entfernen. Hatte das hier mal gefunden: $new_text = preg_replace('/<[^>]+>/','',$text); hat aber nicht funktioniert, soll angeblich alle PHP und HTML Tags entfernen.

                  Gruß
                  Homer J

                  1. So, bin jetzt 1x mal weg und entknote mein Hirn!

                    Schönes WE!

                    Gruß
                    Homer J

          2. n'abend,

            Nun habe ich einen String mit leeren Zeilen, ich benötige jetzt nur das übrig gebliebene. Da ich keinen anderen Weg sah, dachte ich mir den String mit split()ein Array zu packen und dann die leeren Werte rauszunehemen. Vorher hatte ich das etwas anders aufgebaut, die Datei mit file() eingelesen, doch dann funktionierte strip_tags() nicht richtig.

            versuchst du hier die Zeile zu ermitteln, in welcher dein Suchwort vorkommt, oder möchtest du lediglich wissen in welchem Dokument dein Suchwort auftaucht? Letzteres kannst du garantiert einfacher haben.

            weiterhin schönen abend...

            --
            Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
            sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|
            1. Hi!

              Ich brauche das Dokument um einen Link dorthin setzen zu können und ich brauche die Zeile, um einen Ausschnitt aus der Zeile mit in den Link einzubauen.

              Gruß
              Homer J

              1. n'abend,

                Ich brauche das Dokument um einen Link dorthin setzen zu können und ich brauche die Zeile, um einen Ausschnitt aus der Zeile mit in den Link einzubauen.

                Wenn du dein Suchwort im großen String gefunden hast, dann kannst du ausgehend von der Position des Suchwortes einen gewissen Bereich herausschneiden. Diesen Bereich musst du dann noch etwas bearbeiten, sodass es einen Sinnvollen Auszug gibt (also nicht irgendwo in der Mitte eines Satzes angefangen wird).

                weiterhin schönen abend...

                --
                Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                sh:( fo:# ch:# rl:° br:> n4:& ie:{ mo:} va:) de:] zu:} fl:{ ss:? ls:[ js:|