有没有办法可以将“štupîd-(ƒ†le)-nÆmè.txt”等文件重命名为“tup-(le)-nm.txt”,以便在bash或php中删除所有不支持的字符? / p>
答案 0 :(得分:0)
你必须使用一个字符类,并在字符类的开头定义除^
所需内容之外的所有内容:
/[^\w-().]/
PHP代码:
$str = 'štupîd-(ƒ†le)-nÆmè.txt';
echo preg_replace("[^\w-().]","",$str);
//=>tupd-(le)-nm.txt
答案 1 :(得分:0)
使用php:
$str = 'štupîd-(ƒ†le)-nÆmè.txt';
echo preg_replace('~[^[:ascii:]]+~u', '', $str);
(因为你处理UTF-8编码的字符串,你需要使用u修饰符,否则正则表达式引擎将逐字节而不是逐个字符地读取你的字符串。这可能导致不必要的匹配)< / em>
或
echo iconv('UTF-8', 'ASCII//IGNORE', $str);
使用bash:
iconv -c -f UTF-8 -t ASCII <(echo 'štupîd-(ƒ†le)-nÆmè.txt')
答案 2 :(得分:-1)
在php中你可以使用preg_match
来完成preg_replace('/[^A-Za-z0-9-.]/', '', $targetFileDirty);
上面的内容将取代所有内容,但字母,数字和点都没有。