[英]Remove all non-word characters but “.”
刪除文件名中所有非單詞字符的最簡單方法是什么?
顯然需要在擴展之前的末尾處的點,因此除了“ .
”之外的所有符號應該被刪除,如“ -
”或“ *
”或“ ?
” .
像這樣的東西:
$filename = preg_replace("/[^\.]\W/", "", $filename);
為什么不:
$filename = preg_replace('/[^.\w]/', '', $filename);
這將刪除任何不是單詞字符或句點的字符。
我會用這樣的東西:
$filename = preg_replace("/\W(?=.*\.[^.]*$)/", "", $filename);
正則表達式將匹配文件名中的任何非單詞字符(此處的“單詞字符”由類[a-zA-Z0-9_]
),只要存在擴展名即可。
這也將考慮可能的文件名,例如file.name.txt
並正確返回filename.txt
(第一個點不是文件擴展名的點)。
我的偏好是
$filename = preg_replace('/[^.a-zA-Z]/', '', $filename);
如果你想要添加數字,那么
$filename = preg_replace('/[^.a-zA-Z0-9]/', '', $filename);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.