2013-11-20 74 views
0

我目前正在複製某些文件,當用戶更新某些信息。但是,由於在專門命名Windows文件時我們不能有任何特殊的特殊字符,是否有一個正則表達式存在來專門做這件事?所有找到的特殊字符都會被下劃線替換以簡化事情。PHP複製()問題和特殊字符

回答

1

最好的解決方案是使用「slugifier」,如Slugify,這將比正則表達式更安全並且經過測試,因爲它可以處理所有的編碼和奇怪的字符。

一個小例子尤斯Slugify

use Cocur\Slugify\Slugify; 

$slugify = new Slugify();//for iconv translit 
echo $slugify->slugify('Hello World!'); // hello-world 

另一個lib中是urlify從Django項目URLify.js的PHP接口:

echo URLify::filter ('фото.jpg', 60, "", true); 
// "foto.jpg" 

是很容易使用,也許是最好的解決方案。

或者,也許你可以使用這個備用類:

問候

+0

我試過運行這個,但我得到的問題:*** static :: seemUtf8 **方法。 – Dimitri

+0

你有哪個問題?我有這個在我的項目中運行。更好地使用Slugify,你可以使用作曲家安裝它,而不是複製代碼。 – mcuadros

1

這取決於你要替換的特殊字符,但例如更換所有非文字字符和-標誌,你可以使用:

$new_value = preg_replace("/[^-\w]+/", "_", $original_value); 

將只留下-_a-z (也是大寫)和0-9,並用下劃線替換其餘部分。

+0

在這種情況下,這將是更換任何特殊字符不是有效的Windows文件名。 – Dimitri

+0

@Dimitri我不知道哪些字符是完全包含的,但只需將要保留的內容添加到字符類(請注意,它是否定的字符類)。白名單總是比黑名單好。 – jeroen