这是我的正则表达式,以排除特殊字符,然后允许少数像( - ,%,:,@)。我也想允许/
但是问题
return preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%:@&-]/s', '', $string);
这适用于列出的特殊字符,但
return preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%\\:&-]/s', '', $string);
不会过滤l
个字符。
以下是测试链接:
在网址中不允许\\
。我想像往常一样显示网址
答案 0 :(得分:3)
您在http://
之前输入http:\\
时出错,您的正则表达式需要在排除列表中包含/
。这应该有效:
function clean($string) {
// Replaces all spaces with hyphens.
$string = str_replace(' ', '-', $string);
// Removes special chars.
return preg_replace('~[^\w %\[\].()%\\:@&/-]~', '', $string);
}
$d = clean("this was http://nice readlly n'ice 'test for@me to") ;
echo $d; // this-was-http://nice-readlly-nice-test-for@me-to