2010-07-31 8 views
7

मैं इस समारोह है कि परीक्षण एक स्ट्रिंग विंडोज फ़ाइल नाम और अनुकूल फ़ोल्डर है कि क्या पाया। मैंने preg_match के साथ preg_match को मूल रूप से प्रतिस्थापित करने की कोशिश की लेकिन कोई सिगार नहीं।पट्टी बुरा विंडोज फ़ाइल नाम पात्रों

+0

* (संदर्भ) * [MSDN: नामकरण फ़ाइलें, पथ और नेमस्पेस] (http://msdn.microsoft.com/en-us/library/ aa365247% 28VS.85% 29.aspx) – Gordon

उत्तर

17

गॉर्डन reference के बाद, इस देता है:

$bad = array_merge(
     array_map('chr', range(0,31)), 
     array("<", ">", ":", '"', "/", "\\", "|", "?", "*")); 
$result = str_replace($bad, "", $filename); 
+1

यह उससे भी अधिक है। उदाहरण के लिए, आरक्षित नामों को भी हटा देना होगा। विंडोज़ आपको एक फ़ाइल 'CON.PHP' नाम देने नहीं देंगे - हम सभी जानते हैं कि यह एक विशेषता है, हम नहीं;) – Gordon

+0

@ गॉर्डन असल में एमएसडीएन दस्तावेज़ पृष्ठ जिसे आपने लिंक किया है, 'CON.PHP' की अनुमति है, बस निराश है। – Artefacto

+0

@Atetefacto इसे आजमाएं। एक नई फाइल बनाएं, इसे 'CON.php' नाम दें। विंडोज़ (विस्टा) आपको बताएगा कि यह एक अवैध डिवाइस नाम है और इसे स्वीकार करने से इनकार कर दिया है। आप 'CON.hhatever' भी कर सकते हैं, वही बात। – Gordon

संबंधित मुद्दे