我想允許A-Z,a-z和日文漢字,平假名和片假名,而不是別的。 到目前爲止,我想出了這一點:正則表達式過濾日語
$pattern = '/[^\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';
preg_replace($pattern, '', $string);
我不知道,如果這種形式的正則表達式是PHP特有的。我接受網址中的字符串,並希望過濾掉引號和其他「危險」字符。關於上述「模式」的奇怪之處在於,有或沒有「d」時,數字不匹配。
所以下面做同樣的事情:
$pattern = '/[^\d\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';
我感興趣的任何改進或更正 - 不是一個正則表達式嚮導自己。
將危險字符加入黑名單並搜索它們可能會更容易。 – Thilo 2010-11-02 08:44:04
我不知道什麼字符可能是危險的。有關於此的任何信息?我在MySQL where子句中使用這個字符串。所以它確實需要100%消毒。 – 2010-11-02 11:23:25
是否可以使用準備(例如[mysqli](http://php.net/manual/en/class.mysqli-stmt.php))?這通常會更安全。 – 2010-11-02 16:22:05