PHP: explode von TAB

Diskutiere PHP: explode von TAB im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; Hi Leute, bin gerade am rumfummeln in PHP. Nun, ich habe als Quelle einen String der in etwa wie folgt aussieht: NAME WERT1...

  1. nighT

    nighT Gast

    Hi Leute,
    bin gerade am rumfummeln in PHP.
    Nun, ich habe als Quelle einen String der in etwa wie folgt aussieht:
    Code:
    NAME          WERT1          WERT2          WERT3
    
    Diesen kann ich mit der PHP Funktion "explode" wie folgt trennen:
    Code:
    $array = explode(" ", $string);
    
    und die einzelnen Werte mit $array[0], $array[1], usw. ausgeben. Dabei wird die Zeichenkette ja immer bei einem Leerzeichen gekappt.
    Das Problem besteht nun aber darin, dass die Leerschritte zwischen den Werten keine Leerzeichen sondern TAB's sind.
    Wie kann ich den String nun an diesen TAB's trennen?

    mfg nighT
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. nighT

    nighT Gast

    Hi Leute,
    bin gerade am rumfummeln in PHP. Nun habe ich als Quelle einen String der in etwa wie folgt aussieht:
    Code:
    NAME          WERT1          WERT2          WERT3
    
    Nun kann ich ja mit der PHP Funktion "explode" wie folgt die Werte trennen:
    Code:
    $array = explode(" ", $string);
    
    Dabei wird die Zeichenkette bei einem Leerzeichen gekappt. Das Problem besteht nun aber darin, dass die Leerschritte zwischen den Werten keine Leerzeichen sondern TAB-Schritte sind.
    Wie kann ich den String nun an diesen TAB-Schritten trennen?

    mfg nighT

    EDIT: Wenn ich schon am Fragen bin: Kann ich die Distributionsversion (Debian Lenny, openSuse 11, usw.) per PHP abrufen?
     
  4. #3 daboss, 10.04.2009
    Zuletzt bearbeitet: 10.04.2009
    daboss

    daboss Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
    PHP:
    $array explode("\t"$string);
    /edit:
    Ich wüsste nicht, wie ;)
     
  5. daboss

    daboss Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
  6. nighT

    nighT Gast

    Danke!
    explode funktioniert nun super. :))
    Nur das Problem mit der Distri bleibt noch :think:

    Und :gn8: noch
     
  7. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Es gibt da was das nennt sich "Escape-Sequenz". Steht in jedem guten PHP-Buch auf der dritten Seite wo es um Zeichenketten geht. Wenn man dann nach Escape-Sequenz googelt kommt man ganz schnell aufs Handbuch von PHP...

    http://de3.php.net/manual/de/language.types.string.php

    ...und findet raus, dass der Tabulator mit \t angegeben wird. ;)
     
  8. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Wie ich doppelte threads liebe... ;)

    Code:
    cat /etc/redhat-release
    
    funktioniert hier prima auf Fedora. Für Debian, SuSE usw. versuch mal kognitiv zu erschließen wie es da ist. ;)
     
  9. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    399
    Zustimmungen:
    0
    Was mich immer wieder wundert wieso es keine $DISTRO gibt. Ich meine es gibt soviel Linux standarte, warum nicht auch einen zu festellen welche Distro genutzt wird? Auch mit nmap -A bekommt man den Kernel ausgespuckt,
     
  10. #9 Graf_Ithaka, 11.04.2009
    Graf_Ithaka

    Graf_Ithaka Routinier

    Dabei seit:
    29.01.2005
    Beiträge:
    487
    Zustimmungen:
    0
    Hab die beiden mal zusammengefügt.

    @nighT: Ich nehm zwar an, dass es keine Absicht war, aber in Zukunft bitte editiern und ned neu posten ;)

    MfG,
    Graf_Ithaka
     
  11. dmaphy

    dmaphy Routinier

    Dabei seit:
    16.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    /etc/$DISTRO-release, ist das nicht Standard genug? :D
     
  12. #11 daboss, 11.04.2009
    Zuletzt bearbeitet: 11.04.2009
    daboss

    daboss Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
    ...

    /(spätes) Edit: Ok, eventuell kann man obiges in die system() function setzen... aber u.U.
     
  13. janis

    janis BOFH

    Dabei seit:
    02.09.2007
    Beiträge:
    179
    Zustimmungen:
    0
    Du kannst das Betriebssystem eventuell auch über die $_SERVER Variable herausfinden:
    SERVER_SOFTWARE: Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch13 mod_perl/2.0.2 Perl/v5.8.8
     
  14. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    399
    Zustimmungen:
    0
    Leider habe ich keinen Apache Server auf meinem Eeepc installiert dazu sind die Eintraege von /etc/$DISTRO_Release immer die Dirsto von der die Aktuelle aufbaut, z.b Ubuntu wird immer in dem Fall etch ausgeben, was aber falsch ist.
     
  15. #14 daboss, 11.04.2009
    Zuletzt bearbeitet: 11.04.2009
    daboss

    daboss Kaiser

    Dabei seit:
    05.01.2007
    Beiträge:
    1.297
    Zustimmungen:
    0
    Hm:

    Code:
    {-alex-|-asterix-} => [~]
    (10:49:09) l /etc/ | grep -i release
    -rw-r--r--   1 root root      99 2008-10-20 14:07 lsb-release
    {-alex-|-asterix-} => [~]
    (10:49:20) cat /etc/lsb-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=8.10
    DISTRIB_CODENAME=intrepid
    DISTRIB_DESCRIPTION="Ubuntu 8.10"
    
    /Edit: Aber ja, von der *-release-Lösung halt ich auch nicht so viel. An
    Code:
    $_SERVER['SERVER_SOFTWARE'] / $_SERVER['SERVER_SIGNATURE']
    (o.ä.) dachte ich auch schon, wird aber auch nicht "schön" und bei weitem nicht so genau, wie oben im Beispiel vom Eingangspost...
     
  16. #15 janis, 11.04.2009
    Zuletzt bearbeitet: 11.04.2009
    janis

    janis BOFH

    Dabei seit:
    02.09.2007
    Beiträge:
    179
    Zustimmungen:
    0
    Und das?
    Sollte doch auch bei jeder Linux-Distri vorhanden sein, oder nicht?

    Edit:
    Ich finde die besagte Datei unter /etc nicht!
    Bei mir gibt es nur eine debian_version und die enthält "4.0"
     
  17. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    399
    Zustimmungen:
    0
    Dennoch ist die $DISTRO-Release hier mit Debian Etch ausgelegt und man kann nicht immer auf den ersten Blick erkennen ob das sich dann um Ubuntu oder Debian handelt. Deswegen meiner Meinung ein Aufruf von $DISTRO und fertig dann wuerde alles drin stehen was wichtig ist.

    aber whatever Frohe Ostern
    so far
    MFG 4k3nd0


    Edit:
    Peinlich kenne ich ja gar nicht :-), wobei doch so gern mit proc arbeitet.
     
  18. janis

    janis BOFH

    Dabei seit:
    02.09.2007
    Beiträge:
    179
    Zustimmungen:
    0
    Was meinst du mit dem $DISTRO?
    Ist das eine Variable?
    Wenn ich die mit Echo ausgebe, kommt nix. Kein Text.

    System ist ein Debian Etch 64 Bit
     
  19. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    399
    Zustimmungen:
    0
    Das meine ich ja :), das man die aktuell benutzte Dirsto einfach mit echo $DISTRO ausliest.
    Code:
    akendo@helium:~$ echo $DISTRO
     
    akendo@helium:~$ DISTRO=`cat /proc/version`
    akendo@helium:~$ echo $DISTRO
    Linux version 2.6.26-1-686 (Debian 2.6.26-13lenny2) (dannf@debian.org) (gcc version 4.1.3 20080704 (prerelease) (Debian 4.1.2-25)) #1 SMP Fri Mar 13 18:08:45 UTC 2009
    
    So gemeint :)
     
  20. nighT

    nighT Gast

    Hallo,
    hier ist ja richtig was passiert ;)
    Danke für die Antworten.

    Ich habe nie ein PHP-Buch gelesen, da ich es bisher noch zu wenig Spezielles brauchte und somit mit den selbst beigebrachten Dingen voll und ganz auskam.

    Bis auf die $_SERVER-Variable müsste ich ja alles über exec() bzw. system() ausführen, was aber nicht so einfach ist, wenn SafeMode aktiviert ist. Ausstellen möchte ich es eher weniger gern, da auch andere Homepages auf diesem Server liegen.
    Desweiteren rede ich bei meinem Server von einem vServer (Sorry, vergessen zu erwähnen), dort bekomme ich z.B. mit "cat /proc/version" folgendes ausgegeben:
    Code:
    Linux version 2.6.18-92.1.18.el5.028stab060.2 (root@rhel5-64-build) (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Tue Jan 13 11:38:36 MSK 2009
    Obwohl es sich bei meinem vServer-OS um Debian Lenny handelt.

    Und um nochmal auf den dopellten Thread zurückzukommen... Ich bin mir nicht bewusst, dass ich gleich zwei Threads aufgemacht habe?! :think:
    Habe zwar keine Ahnung wie das passieren konnte, aber trotzdem entschuldigung.
     
  21. janis

    janis BOFH

    Dabei seit:
    02.09.2007
    Beiträge:
    179
    Zustimmungen:
    0
    wegen dem system oder exec:
    Du kannst auch einfach mal file_get_contents('/proc/version/'); ausprobieren.
    Bei mir klappt das, kann aber auch sein, dass ich meine Homeserver einfach zu weit aufgebohrt habe ;)
     
Thema:

PHP: explode von TAB

Die Seite wird geladen...

PHP: explode von TAB - Ähnliche Themen

  1. C Funktion ähnlich bzw. gleich PHP explode

    C Funktion ähnlich bzw. gleich PHP explode: Abend! Gibt es in C eine Standart Funktion, die ähnlich bzw. gleich der PHP Funktion explode ist? Ich hab schon versucht eine nachzuprogrammieren...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden