[PHP] Binair 'Split'ten

Pagina: 1
Acties:

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 23:09
Goedemorgen,

Werkende aan een project, kwam ik het volgende probleem tegen en ik weet na een paar uur zoeken eigenlijk niet hoe ik het moet tackelen :

In een PHP script is het nodig om een 'binair' bestand te openen waar een aantal records met een onbekende structuur in staan. Ik moet het aantal records uit die file weten. Nu ben ik erachter gekomen (door goed te file na te lezen) dat elk record begint met een header in de vorm van een aantal characters (hex : 07 00 00 00 00 00 enz..)
code:
1
2
3
$fd = fopen ($file, "rb");
$contents = fread ($fd, filesize ($file));
fclose ($fd);

Nu had ik het idee om dan $contents te splitten op die reeks characters en dan is het aantal elementen in de array het aantal records in de file. Hoe krijg ik nu echter deze hexadecimale tekens in een split ?

Hexdec / Dechex funktie lijken me van pas komen, maar ik kom er niet echt uit. Wie geeft me een zetje ?

SIZE does matter.
"You're go at throttle up!"


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 23:09
Ik weet wel hoe ik een hex variabele kan maken, maar iets als het volgende werkt natuurlijk niet :
PHP:
1
<?$splitstring = 0x1A;for ($idx = 0; $idx <= 40; $idx ++) {  $splitstring .= 0x00;}$array = split($splitstring, $contents);?>

SIZE does matter.
"You're go at throttle up!"


  • Grum
  • Registratie: Juni 2001
  • Niet online
daar heb je niet veel aan omdat dat een getal opleverd ipv een binary string waarop je kan matchen.

Maar als je gewoon de string copy/paste en em tussen single quotes zet zal ie vast werken ;) (moet je wel erop kunnen vertrouwen dat et programma waarvan je cp'ed et goed doet)

Je zou natuurlijk ook nog gewoon zo kunnen doen:

$theString = "\x08\x00\x00\x00\x00\x00";

en die string vervolgens in split of z'n regexps-loze vriendje explode gebruiken.

have fun iig ;)