我想禁止字符串中的所有符号,而不是去禁止每一个符号,我认为只允许使用字母数字字符(a-z A-Z 0-9)会更容易。
我如何解析字符串并将其转换为只允许字符的字符串?我还想将任何空格转换为_
。
目前我有:
function parseFilename($name) {
$allowed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
$name = str_replace(' ', '_', $name);
return $name;
}
由于
答案 0 :(得分:2)
尝试
$name = preg_replace("/[^a-zA-Z0-9]/", "", $name);
答案 1 :(得分:1)
您可以使用数组作为find
中的replace
/ preg_match()
参数,一次完成两次替换:
$str = 'abc def+ghi&jkl ...z';
$find = array( '#[\s]+#','#[^\w]+#' );
$replace = array( '_','' );
$newstr = preg_replace( $find,$replace,$str );
print $newstr;
// outputs:
// abc_defghijkl_z
\s
匹配空格(替换为单个下划线),正如@ F.J所述,^\w
是“不是单词字符”(用空字符串替换)。
答案 2 :(得分:0)
preg_replace()
是前往此处的方式,以下内容应该符合您的要求:
function parseFilename($name) {
$name = str_replace(' ', '_', $name);
$name = preg_replace('/[^\w]+/', '', $name);
return $name;
}
[^\w]
相当于[^a-zA-Z0-9_]
,它将匹配任何非字母数字或下划线的字符。 +
之后的{{1}}表示匹配一个或多个,这应该比单独替换每个字符稍微有效。
答案 3 :(得分:0)
尝试使用HTML部分
pattern="[A-Za-z]{8}" title="Eight letter country code">