首页 > 解决方案 > php regex 从字符串中删除方括号和括号

问题描述

我正在使用它来清理文件名,但它仍然允许方括号和括号通过,这些是“{}()[]”。我正在尝试让正则表达式删除这些。

$clean = preg_replace("([^\w\s\d\.\-_~,;:\[\]\(\)]|[\.]{2,})", '', $file_name);

标签: phpregex

解决方案


从表达式中删除方括号(实际上,此表达式删除了不是任何字符表达式的所有内容)还{2,}意味着您只能在序列内匹配2 个或更多字符时删除它们。您可以使用{1,}+

$clean = preg_replace("([^\w\s\.\-_~]+)", '', $file_name);

如果你想删除重复的元素,{2,}这可能是另一个额外的替换,如下所示:

$clean = preg_replace("([.]{2,})", '.', $clean);

例如:

<?php
$file_name="test#&ing %^& (123y456) aaa [678n789]..xxx.txt";
$clean = preg_replace("([^\w\s\.\-_~]+)", '', $file_name);
$clean = preg_replace("([.]{2,})", '.', $clean);
print_r($clean); // 'testing 123y456 aaa 678n789.xxx.txt'
?>

推荐阅读