php

2010-10-11 6 views
15

में एक स्ट्रिंग से एकल उद्धरण निकाला जा रहा है मैं एक HTML फार्म का है कि एक उपयोगकर्ता एक title क्षेत्र में इनपुट पाठ, मैं तो php title.htmlphp

मेरे समस्या कहा जाता एक HTML फ़ाइल बनाने में हो सकता है कि उपयोगकर्ताओं को इनपुट कर सकते हैं रिक्त स्थान है और शीर्षक क्षेत्र में apostrophes जिसका उपयोग HTML फ़ाइल नाम में नहीं किया जा सकता है।

$FileName = str_replace(" ", "_", $UserInput); 

हालांकि, मैं एकल उद्धरण को दूर नहीं कर पा रहे: मैं का उपयोग करके अंडरस्कोर से रिक्त स्थान की जगह? मैं का उपयोग कर की कोशिश की है:

$FileName = preg_replace("/'/", '', $UserInput); 

लेकिन इस test's लिया और test\s.html में बदल गया।

$FileName = str_replace("'", "", $UserInput); 

हालांकि यह देखने के लिए मुश्किल है, पहले तर्क एक दोहरे उद्धरण एक दोहरे उद्धरण के बाद एक भी बोली के बाद है:

+1

आप मिल गया है मैजिक कोट चालू। इससे हल होने की तुलना में अधिक समस्याएं होती हैं, इसलिए उन्हें बंद कर दें। – staticsan

उत्तर

44

अपने वर्तमान str_replace पद्धति का उपयोग करना। दूसरा तर्क दो डबल कोट्स है जिसमें कुछ भी नहीं है।

str_replace के साथ, आप भी तार की एक सरणी आप पूरी तरह से निकालना चाहते हैं, हो सकता है:

$remove[] = "'"; 
$remove[] = '"'; 
$remove[] = "-"; // just as another example 

$FileName = str_replace($remove, "", $UserInput); 
8

आप HTML entitiy में स्थानापन्न कर सकते हैं:

$FileName = preg_replace("/'/", "\'", $UserInput); 
2

तुम भी दूर करने में अधिक प्रतिबंधात्मक हो सकता है अस्वीकृत पात्रों।

$FileName = preg_replace('/[^\w]/', '', $UserInput); 

ऐसा करने के लिए विभिन्न ऑपरेटिंग सिस्टम में फ़ाइल नाम के लिए अधिकतम संगतता सुनिश्चित करने के लिए चाहते हो सकता: निम्नलिखित regex सभी वर्णों कि अक्षर, अंक नहीं हैं या रेखांकित को दूर करेंगे।

0
$replace_str = array('"', "'", ","); 
$FileName = str_replace($replace_str, "", $UserInput); 
+1

हालांकि यह कोड स्निपेट प्रश्न हल कर सकता है, [एक स्पष्टीकरण सहित] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। स्पष्टीकरण टिप्पणियों के साथ अपने कोड को भीड़ न करने का प्रयास करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है! –

0
$test = "{'employees':[{'firstName':'John', 'lastName':'Doe'},{'firstName':'John', 'lastName':'Doe'}]}" ; 
$test = str_replace("'", '"', $test); 
echo $test; 
$jtest = json_decode($test,true); 
var_dump($jtest); 
0

में वैकल्पिक विशेषताओं के लिए इस समारोह htmlspecialchars इस्तेमाल किया यह एक प्रयास करें। आप पट्टी कर सकते हैं बस ' और " साथ:

$FileName = str_replace(array('\'', '"'), '', $UserInput); 
संबंधित मुद्दे

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