我试图从用户使用$ _POST字符串删除(大多数)特殊字符,然后将其插入数据库,并使用以下preg_replace函数:
echo( 'checked = "checked"');
现在,输入$ description:
preg_replace('/[^a-zA-Z0-9\-._äöü]/', '', $description);
结果只是:
abc !"§$%&/()=?`*'#+´ß
为什么函数删除了abc,但保留了'?',这不在我的preg_replace白名单中? 任何答案都是非常苛刻的。
答案 0 :(得分:1)
PHP应配置为UTF-8。将default_charset
INI选项设置为'UTF-8'
;使用u
pattern modifier:
ini_set('default_charset', 'UTF-8');
$description = 'abc !"§$%&/()=?`*\'#+´ß.';
$r = preg_replace('/[^a-zA-Z0-9\-\._äöü]/u', '', $description);
var_dump($r);
示例输出
string(4) "abc."
另外,请考虑设置UTF-8语言环境,因为basename
等函数可识别语言环境:
setlocale(LC_ALL,
'de_DE.UTF-8',
'de_DE.utf8',
'en_US.UTF-8',
'en_US.utf8'
);
答案 1 :(得分:0)
您可以使用'/\W/'
删除所有特殊字符:
<?php
$string = 'abc !"§$%&/()=?*#+´ß';
echo preg_replace('/\W/', '', $string); // abc
?>
答案 2 :(得分:0)
var count = 2;
for(var i = 0; i < count; i++){
function(){
if (jQuery('#gallery-v' +i +'').length) {
var $container = jQuery('#gallery-v' +i +'');
alert($container);
$container.imagesLoaded( function(){
$container.isotope({
filter: '*',
animationOptions: {
duration: 750,
easing: 'linear',
queue: false
}
});
});
jQuery('#filterlist_v' +i +' a').click(function() {
alert(this);
jQuery('#filterlist_v +i +' .current').removeClass('current');
jQuery(this).addClass('current');
var selector = jQuery(this).attr('data-filter');
$container.isotope({
filter: selector,
animationOptions: {
duration: 750,
easing: 'linear',
queue: false
}
});
return false;
});
}
}
}
使用方法:
function clean($string) {
$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}