Some languages/programs output a sha256 as you are seeing it (efbd4c3ab44f32...). This is nice because it's easily readable. It uses two hexadecimal characters [0-9a-f] for each output byte of the hash. A disadvantage is it essentially uses twice as much space as is necessary.
We are sending (and receiving) the binary versions of these hashes. For JSON users, we are base64'ing to make it web safe.
For php, it looks like you can use hash('sha256', $expression, true) to output the binary string instead. With the binary string, you can take a prefix and compare it with the full update we sent you. As I said before, we may have sent both 4 byte and 5 byte (or longer) hashes. So you could first check the first 4 bytes of your hashed expression, then the 5 byte, etc.
When you send the matching hash prefix, you'll need to base64 it as well before encoding to json. In this case the 4-binary-byte base64'ed value should be 771MOg==.
Let me know if you have any more questions.