簡體   English   中英

PHP正則表達式從文件名到擴展名替換字符

[英]php regex replace caracters from filename until extension

我想從文件名中替換除'A-Z','a-z','0-9', '_', '-', '(', ')'以外'A-Z','a-z','0-9', '_', '-', '(', ')'所有字符,直到擴展名。

目前我有:

$filename = '23$%^&.234234.%^.234$%$#)(.^$.png';

$fileName = preg_replace('/[^A-Za-z0-9_\-\(\) ]/', '-', $filename);

我得到

$filename : 23------234234----234----)(----png

問題是“。” 從擴展名中刪除。 文件名可以具有不同的擴展名。

我應該如何更改字符,而不是擴展名。

您可以嘗試使用pathinfo函數將擴展名與文件名分開,並僅在基本文件名中替換不需要的字符。 一切完成之后,只需合並這些部分:

$filename = '23$%^&.234234.%^.234$%$#)(.^$.png';
$pathinfo = pathinfo($filename);
$filename = implode('.', array(
  preg_replace('/[^A-Za-z0-9_\-\(\) ]/', '-', $pathinfo['filename']),
  $pathinfo['extension']
));

var_dump($filename);

輸出:

string '23-----234234----234----)(---.png' (length=33)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM