I have had the same problem in my game, I haven't come up with the solution I'm going to try for real yet, but here is how I think I'll do it.
Create an object called "detector" and put it in the container of your zombie. This creates one for each zombie, and when you perform a "for each object" on the zombies, it will select the right contained detector.
Make sure the sprite is invisible, but has box collision detection and resize it to the shoulder-width of the zombie (or smaller for finer detection). Then set the centre of the detector to its parent zombie, and stretch it to the player.
If it doesn't overlap a wall while overlapping the player, it can see them. Might be handy to put a distance check in as well to ensure the player isn't miles away if you want.
Anyway, I hope it works =]