PHP: explode von TAB

N

nighT

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
 
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?
 
PHP:
$array = explode("\t", $string);
/edit:
EDIT: Wenn ich schon am Fragen bin: Kann ich die Distributionsversion (Debian Lenny, openSuse 11, usw.) per PHP abrufen?
Ich wüsste nicht, wie ;)
 
Zuletzt bearbeitet:
Danke!
explode funktioniert nun super. :))
Nur das Problem mit der Distri bleibt noch :think:

Und :gn8: noch
 
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. ;)
 
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. ;)
 
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,
 
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,

/etc/$DISTRO-release, ist das nicht Standard genug? :D
 
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. ;)

Wenn ich schon am Fragen bin: Kann ich die Distributionsversion (Debian Lenny, openSuse 11, usw.) per PHP abrufen?
...

/(spätes) Edit: Ok, eventuell kann man obiges in die system() function setzen... aber u.U.
php.net schrieb:
Hinweis: Mit aktiviertem Safe Mode können Sie nur Programme ausführen, die im Verzeichnis liegen, das mit safe_mode_exec_dir angegeben wurde. Aus praktischen Gründen ist es gegenwärtig nicht erlaubt, dass der Pfad zu einem Programm .. enthält.
 
Zuletzt bearbeitet:
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
 
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.
 
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.

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...
 
Zuletzt bearbeitet:
Und das?
xxx@server:~$ cat /proc/version
Linux version 2.6.18-6-amd64 (Debian 2.6.18.dfsg.1-22etch2) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Tue Aug 19 04:30:56 UTC 2008
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"
 
Zuletzt bearbeitet:
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.
 
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
 
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

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 :)
 
Hallo,
hier ist ja richtig was passiert ;)
Danke für die Antworten.

dmaphy schrieb:
Steht in jedem guten PHP-Buch auf der dritten Seite wo es um Zeichenketten geht
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.
 
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 ;)
 

Ähnliche Themen

Php: User defined function inside array

Zurück
Oben