String mit Betriebsstunden

Hallo,
ich finde leider keinen Ansatz wie ich meinen String zerlegen kann und in in eine Integer zu schreiben. Vielleicht kann mir jemand helfen.

02h23m25s

Eventuell hilft das weiter:

<?php
    function splitByChars($str, $chars) {
        $regex = (is_array($chars) ? implode('', $chars) : $chars);
        $regex = preg_quote($chars);
        $regex = addcslashes($chars, '=');
        $regex = '\s*['.$regex.']+\s*';
        return preg_split('='.$regex.'=u', $str);
    }
 
    $string = '02h23m25s';

    $array = splitByChars($string,'hms');

    $stunden = intval ($array[0]);
    $minuten = intval($array[1]);
    $sekunden = intval($array[2]);

    echo $stunden. "
";
    echo $minuten. "
";
    echo $sekunden. "
";

?>

Ok. Vielen vielen Dank.:slight_smile:

Noch ein Problem:(

Wie kann ich diesen String prüfen ob er so aufgebaut ist?

$$h$$m$$s

oder so

$$$h$$m$$s

Für die Funktion ist die Anzahl der Stellen unwichtig.
Der String wird an den der Funktion übergebenen Zeichen (h,m und s) geteilt.

$string = '1402h23m25s';

führt zum Ergebnis

Stunden: 1402
Minuten: 23
Sekunden: 25

Das habe ich verstanden.
Nur muss ich den gelieferten String zuerst überprüfen ob er meine Information (Betriebszeit) enthält. Da müsste ich prüfen ob die letzte Stelle ein „s“ die 4.letze Stelle ein „m“ und die 7.letze Stelle ein „h“ ist. Ich zähle von hinten weil die Stunden können auch 3-stellig sein.

Nicht zählen, das prüft die RegEx selber
zb. so


<?php
$result=array();
$subject='1402h23m25s';
if (preg_match('/(\d+)h(\d+)m(\d+)s$/m', $subject,$result)) {
	# Successful match
    $std=$result[1];
    $min=$result[2];
    $sec=$result[3];
    print "$std Stunden, $min Minuten, $sec Sekunden 
<br>";

} else {
	print "Ungültig
<br>";
}