के साथ क्लास/विधि नामों को मान्य करें मैं वर्तमान में एक कंपनी के लिए एक एमवीसी स्टाइल फ्रेमवर्क पर काम कर रहा हूं और सुरक्षा कारणों से मुझे यह सुनिश्चित करने की ज़रूरत है कि क्वेरी स्ट्रिंग के माध्यम से पारित नियंत्रक/विधि आरएफसी के लिए वैध वर्ण है (जो मुझे नहीं मिल रहा है)।रेगेक्स
class SomEFunk__YClAssName extends Controller
{
}
मुझे लगता है कि SomEFunk__YClAssName
को मान्य है और यह स्वच्छ होगा regex किसी तरह की जरूरत है:
मैं क्या पीएचपी दुभाषिया
उदाहरण के लिए द्वारा दी जाने वाली अनुमति के अनुसार वर्ग नामों स्वच्छ मान्य करने के लिए/सक्षम होना चाहिए अगर जरूरत हो! यह विधियों के समान सिद्धांत भी है।
कुछ चीजें शुरू
- अंकीय ध्यान में रखना करने के लिए नहीं है।
इस या संभावित अभिव्यक्तियों पर कोई भी जानकारी वास्तव में सहायक होगी।
private function prepareQueryString()
{
if(strlen($this->query_string) == 0)
{
return;
}
//Remove [ending|starting|multiple] slashes
$this->query_string = preg_replace('/^\/+|\/+$|\/(?=\/)/', '', $this->query_string);
foreach(explode('/',$this->query_string) as $Key => $Value)
{
if($Key == 0)
{
$Controller = $this->AssignController($Value);
}
if($Key == 1)
{
$this->AssignMethod($Value);
}else
{
$this->AssignParam($Value);
}
}
//Build RouterVar stdClass
}
public function AssignController(String $Controller)
{
if(!empty($Controller))
{
//Sanitize
}
}
public function AssignMethod(String $Method)
{
if(!empty($Method))
{
//Sanitize
}
}
public function AssignParam(String $Param)
{
$this->params[] = $Param;
}
आप टिप्पणी "स्वच्छ" जहां चेक की जरूरत है देखेंगे:
यहाँ मेरी रूटर संहिता के कुछ ताकि आप देख सकते हैं, जहां मैं इसे लागू करने की आवश्यकता है।
कोड उदाहरण और दस्तावेज़ीकरण लिंक के लिए धन्यवाद। मैंने इसे उत्तर के रूप में चिह्नित किया होगा। – Xunnamius
** ध्यान **: मुझे लगता है कि आपके 'preg_match' में कोई दोष है, क्योंकि कोई प्रारंभ/अंत डिलीमीटर नहीं दिया जाता है। '$ इनपुट =" के साथ आपका कोड निश्चित रूप से मान्य क्लासनाम नहीं है! "वापस आ जाएगा 1. यदि आप इसे 'preg_match ('/^ [a-zA-Z_ \ x7f- \ xff] में बदलते हैं [a-zA-Z0- 9_ \ x7f- \ xff] * $/', $ इनपुट); 'यह 0/ –
प्रारंभ/समाप्ति डिलिमीटर पर अच्छा कॉल देता है। – nate