0

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

我将如何解析字符串并将其转换为仅包含允许字符的字符串?我还想将任何空格转换为_.

目前我有:

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

    return $name;
}

谢谢

4

4 回答 4

2

尝试

$name = preg_replace("/[^a-zA-Z0-9]/", "", $name);
于 2012-05-16T20:09:02.987 回答
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匹配空格(替换为单个下划线),并且如@FJ 所述,^\w是任何“非单词字符”(替换为空字符串)。

于 2012-05-16T23:20:24.447 回答
0

preg_replace()是去这里的方式,以下应该做你想要的:

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

[^\w]相当于[^a-zA-Z0-9_],它将匹配任何不是字母数字或下划线的字符。在+它意味着匹配一个或多个之后,这应该比单独替换每个字符更有效。

于 2012-05-16T20:13:34.570 回答
0

尝试使用 HTML 部分

pattern="[A-Za-z]{8}" title="Eight letter country code">
于 2019-02-15T14:04:29.077 回答