Informationen aus Zeichenkette in PHP auslesen
Liebe leute! Ich muss aus der Zeichenkette: Client-2.0.1.1820-RC-32_Serial.exe
mittels PHP auslesen:
Name: Client
Release: RC oder Final
Version: 2.0.1.1820
Bit: 64 oder 32
Serial: Seriennummer (immer 25 zeichen) (Statt _Serial)
Wobei sich die Zeichen immer ändern können zb. 32 und 64 bit und RC und Final.. aber der Dateiname ist immer so aufgebaut. Der Serial hat immer 25 Zeichen.
Wenn sich die anzahl der punkte im dateinamen verändert soll abgebrochen werden.
Wer kann mir helfen?!
und dann?! Bin ein blutiger anfänger das einzige was ich kenne ist strpos() Und strlen()..
mittels PHP auslesen:
Name: Client
Release: RC oder Final
Version: 2.0.1.1820
Bit: 64 oder 32
Serial: Seriennummer (immer 25 zeichen) (Statt _Serial)
Wobei sich die Zeichen immer ändern können zb. 32 und 64 bit und RC und Final.. aber der Dateiname ist immer so aufgebaut. Der Serial hat immer 25 Zeichen.
Wenn sich die anzahl der punkte im dateinamen verändert soll abgebrochen werden.
Wer kann mir helfen?!
$name = 'Client-2.0.1.1820-RC-32_Serial.exe';
und dann?! Bin ein blutiger anfänger das einzige was ich kenne ist strpos() Und strlen()..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101308
Url: https://administrator.de/contentid/101308
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Wie waere es mit ein paar mehr String-Funktionen:
Alle zu finden unter: www.php.net
Zu Deinem Beispiel:
Try it.
Ich habe keinen farbigen Editor hier, so bitte pruefe die Syntax auf richtige Schreibweise. Die verwendeten Funktionen sind alle auf php.net erklaert.Zum Beispiel: http://uk.php.net/manual/de/function.strripos.php
Gruss aus England Kuli
Alle zu finden unter: www.php.net
Zu Deinem Beispiel:
<?
$string = "Client-2.0.1.1820-RC-32_55555555.exe";
$name = substr($string,0,strpos($string,"-"));
$pos_start = strpos($string,"-")+1;
$pos_ende = strrpos($string,"_");
$version = substr($string,$pos_start,$pos_ende-$pos_start );
$release = strstr($string, 'RC') ? "RC" : "Final";
$bit = strstr($string, '64_') ? '64' : '32';
$serial = substr($string,strpos($string,"_")+1,-4);
echo "name: ".$name."<br>";
echo "version: ".$version."<br>";
echo "release: ".$release."<br>";
echo "bit: ".$bit."<br>";
echo "serial: ".$serial."<br>";
?>
Try it.
Ich habe keinen farbigen Editor hier, so bitte pruefe die Syntax auf richtige Schreibweise. Die verwendeten Funktionen sind alle auf php.net erklaert.Zum Beispiel: http://uk.php.net/manual/de/function.strripos.php
Gruss aus England Kuli
Oder du machst es einfach mit Regulären Ausdrücken
Hier das Ergebnis --> http://regexp-evaluator.de/evaluator/a89373ed619bb9accc47ff765eac7f29/# ...
Mfg
Enclave
<?php
$string = "Client-2.0.1.1820-RC-32_Serial.exe";
if(!preg_match('~^Client-([0-9.]+)-([a-zA-Z]+)-([2-6]{2})_(.*)\.exe$~', $string, $einzeln))
die("Dumm gelaufen...");
echo $einzeln[1]; //*** 2.0.1.1820
echo $einzeln[2]; //*** RC
echo $einzeln[3]; //*** 32
echo $einzeln[4]; //*** SERIALSERIALSERIALSERIAL$
?>
Hier das Ergebnis --> http://regexp-evaluator.de/evaluator/a89373ed619bb9accc47ff765eac7f29/# ...
Mfg
Enclave
In regulären Ausdrücken kann man in Klammern eingeschlossene Bereiche zusammenfassen.
Und da es am einfachsten ist die in ein Array zu packen statt in viele einzelne Variablen gibt es einfach als dritten Parameter "Treffer". Diese werden dann in Reihenfolge ihres Auftretens in das Array geschrieben...
PHP Manuell
Mfg
Enclave
Und da es am einfachsten ist die in ein Array zu packen statt in viele einzelne Variablen gibt es einfach als dritten Parameter "Treffer". Diese werden dann in Reihenfolge ihres Auftretens in das Array geschrieben...
PHP Manuell
Mfg
Enclave