You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从逗号分隔字符串中筛选仅含白名单字符的内容?

PHP 数组过滤:移除含非标准字符的元素

你可以通过array_filter结合正则表达式精准实现需求,核心是用正则匹配仅包含允许字符的元素,具体代码如下:

// 示例输入数组
$input = ['Adam-Smith', 'Christine', 'Müller', 'Roger', 'Hauptstraße', 'X Æ A-12'];

// 定义允许的字符集:大小写字母、数字,以及指定特殊符号
$allowedPattern = '/^[a-zA-Z0-9()""\-+&%@#]+$/';

// 过滤数组,仅保留符合规则的元素
$output = array_filter($input, function($item) use ($allowedPattern) {
    return preg_match($allowedPattern, $item);
});

// 重置数组索引(可选,按需使用)
$output = array_values($output);

print_r($output);

正则表达式说明:

  • ^ 和 $:强制匹配整个字符串,避免出现"部分合法但存在非法字符"的漏判情况
  • [a-zA-Z0-9]:匹配所有大小写英文字母与数字
  • ()""\-+&%@#:匹配你指定的特殊符号,其中\-是转义后的连字符(连字符在正则字符集内有范围定义的特殊作用,必须转义才能表示普通连字符)

运行结果:

执行代码后输出为:

Array
(
    [0] => Adam-Smith
    [1] => Christine
    [2] => Roger
)

完全符合你期望的结果,同时不会误删包含"a"的合法元素。

内容的提问来源于stack exchange,提问作者Astw41

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:40:54