获取MD5字符串的前八个字节

I want to get the first eight bytes of a calculated MD5 string. In Ruby I do this:

Digest::MD5.digest("foo")[0, 8]

What is the best way to do this in PHP?

EDIT: I don't want it as a String, which substr() returns. I thought of calling md5("foo", true), where the true parameter enables returning binary. I want to cut the 16 bytes to 8 bytes.

If I remember correctly, using md5() and hex2bin() should do what you want:

substr(hex2bin(md5("foo")), 0, 8);

EDIT:

If the hex2bin() function is not defined, you can alternatively implement it yourself using this function (from here):

function hex2bin($hexdata) { 
  $bindata=""; 

  for ($i=0;$i<strlen($hexdata);$i+=2) { 
    $bindata.=chr(hexdec(substr($hexdata,$i,2))); 
  } 

  return $bindata; 
}

Use substr.

substr(md5("foo"),0,8);

Use md5 and substr: substr(md5("foo"), 0, 8)

The easiest way is to do:

printf(substr(md5('foo'),0,8));