strtok() splits a string based on the characters presented in the second variable. In this case, for $disc3, you are passing a call like this: strtok("38-44-85-91", "38-44-"). The resulting string will therefore be tokenized whenever it encounters a "3", "8", "-", or "4". There is no way for strtok to return "85", because "8" is in the list of token delimiters.
I think that you are trying to do this:
$d = "38-44-85-91";
$disc1 = strtok($d,"-");
echo "1: $disc1<br>";
$disc2 = strtok("-");
echo "2: $disc2<br>";
$disc3 = strtok("-");
echo "3: $disc3<br>";
$disc4 = strtok("-");
echo "4: $disc4<br>";
Personally, I think a better way to do this would be to use the explode() function.
EDIT: Oops, I guess I took too long writing my response!