Clamping diodes can work if you include a series resistor to limit current. You need to make sure that your diodes conduct before the internal diodes, which are often not rated for any current (hence the absolute max. input voltage of Vcc+1 diode drop or so).
One solution that I like is to make it an open collector output with pull-up. Put a diode in series with the output, with the cathode facing the output. Put a pull-up resistor (few kohm or so) to 3.3V on the anode side, and connect the anode to your input. The diode will conduct if pulled low, and the output voltage will be one diode drop (use Schottky diode to limit this to 0.3V or so). If the output is high, the diode will be reverse biased, and the pull-up resistor will pull it to 3.3V. Disadvantage is that low is slightly above 0V (should be well within VIL of your input), and the rise time is limited by the RC time of the pull-up resistor plus the (parasitic) capacitance of the input. I've used this successfully for 115200 baud async serial (UART), if your sensors are much faster than that, you may need an active solution.
I think Sparkfun has a page with various options, and this is number three or so. The other options are either more complex or use undocumented specs of the part (eg. ESD clamping diodes, datasheets often state that they should not conduct any current, and rarely give safe limits).