Php 仅允许字符串中的某些字符

Php 仅允许字符串中的某些字符,php,regex,string,Php,Regex,String,我想禁止字符串中的所有符号,而不是去禁止每个符号,我认为只允许字母数字字符(a-z a-z 0-9)更容易 如何解析字符串并将其转换为只允许使用字符的字符串?我还想将任何空格转换为。 目前我有: function parseFilename($name) { $allowed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' $name = str_replace(' ', '_', $name)

我想禁止字符串中的所有符号,而不是去禁止每个符号,我认为只允许字母数字字符(a-z a-z 0-9)更容易

如何解析字符串并将其转换为只允许使用字符的字符串?我还想将任何空格转换为

目前我有:

function parseFilename($name) {
    $allowed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    $name = str_replace(' ', '_', $name);

    return $name;
}
谢谢

试试看

$name = preg_replace("/[^a-zA-Z0-9]/", "", $name);
试一试

preg_replace()
是一种方法,下面应该做您想做的事情:

function parseFilename($name) {
    $name = str_replace(' ', '_', $name);
    $name = preg_replace('/[^\w]+/', '', $name);
    return $name;
}
[^\w]
相当于
[^a-zA-Z0-9\
,它将匹配任何非字母数字或下划线的字符。
+
表示匹配一个或多个字符后,这应该比单独替换每个字符稍微有效。

preg_replace()
就是这样做的,下面应该做您想要做的事情:

function parseFilename($name) {
    $name = str_replace(' ', '_', $name);
    $name = preg_replace('/[^\w]+/', '', $name);
    return $name;
}

[^\w]
相当于
[^a-zA-Z0-9\
,它将匹配任何非字母数字或下划线的字符。
+
表示匹配一个或多个字符后,这应该比单独替换每个字符稍微有效。

您可以使用数组作为
preg_match()中查找
/
替换
参数,一次执行两个替换:


\s
匹配空格(替换为一个下划线),并且如@F.J所述,
^\w
是任何“非单词字符”(替换为空字符串)。

您可以使用数组作为
preg\u match()中的
find
/
replace
参数,同时执行这两种替换:


\s
匹配空格(替换为一个下划线),如@F.J所述,
^\w
是任何“非单词字符”(替换为空字符串)。

尝试使用HTML部分

pattern="[A-Za-z]{8}" title="Eight letter country code">

尝试使用HTML部分

pattern="[A-Za-z]{8}" title="Eight letter country code">

可能的重复可能的重复或可能的重复可能的重复或尝试查看此尝试查看此