Я хочу разрешить A-Z, a-z и японский кандзи, хирагану и катакана и ничего больше. До сих пор я придумал это:Regex filtering Japanese
$pattern = '/[^\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';
preg_replace($pattern, '', $string);
Я не уверен, если это форма регулярных выражений является PHP специфичны. Я принимаю строку в URL-адресе и хочу отфильтровать кавычки и другие «опасные» символы. Нечетная вещь в вышеупомянутой «схеме» заключается в том, что с «d» или без нее цифры не совпадают.
Так следующий делает то же самое:
$pattern = '/[^\d\w\x{3041}-\x{3094}\x{30A1}-\x{30fA}\x{30fC}\x{4E00}-\x{9FFF}_\-]+/u';
Я заинтересован в каких-либо улучшениях и исправлениях - не является регулярным выражением волшебника самого.
Это может быть проще в черный список опасных символов и искать их вместо этого. – Thilo
Я понятия не имею, какие персонажи могут быть опасны. Любая информация об этом? Я использую эту строку в предложении MySQL where. Таким образом, на самом деле это необходимо для 100% дезинфекции. –
Возможно ли использовать вместо этого подготовленный (например, [mysqli] (http://php.net/manual/en/class.mysqli-stmt.php))? Это будет, как правило, безопаснее. –