2012-06-12 3 views
11

का उपयोग कर मैं अपने शुरुआती PHP कौशल का अभ्यास कर रहा हूं और जानना चाहता हूं कि यह स्क्रिप्ट हमेशा गलत क्यों लौटती है?फ़िल्टर_वार FILTER_VALIDATE_REGEXP

मैं क्या गलत कर रहा हूं?

$namefields = '/[a-zA-Z\s]/'; 

$value = 'john'; 

if (!filter_var($value,FILTER_VALIDATE_REGEXP,$namefields)){ 
    $message = 'wrong'; 
    echo $message; 
}else{ 
    $message = 'correct'; 
    echo $message; 
} 
+0

जब मैं preg_match() का उपयोग करता हूं तो यह ठीक काम करता है ... – Iris

+0

preg_match() आपको कॉलबैक फ़िल्टर का उपयोग करने की आवश्यकता होगी। यदि आप PHP फ़िल्टर तंत्र का उपयोग करना चाहते हैं (जो superglobals का उपयोग करने से थोड़ा अलग ऑपरेटिंग कर रहा है), तो मैन्युअल उदाहरणों की तरह एक सहयोगी सरणी बनाएं। –

उत्तर

18

मुझे याद है के रूप में, regexp एक विकल्प सरणी में होना चाहिए।

$ स्ट्रिंग = "इस स्ट्रिंग से मिलान करें";

var_dump(
    filter_var(
     $string, 
     FILTER_VALIDATE_REGEXP, 
     array(
      "options" => array("regexp"=>"/^M(.*)/") 
     ) 
    ) 
); // <-- look here 

इसके अलावा,

$namefields = '/[a-zA-Z\s]/'; 

बल्कि

$namefields = '/[a-zA-Z\s]*/'; // alpha, space or empty string 

या

$namefields = '/[a-zA-Z\s]+/'; // alpha or spaces, at least 1 char 

क्योंकि पहले संस्करण मुझे लगता है कि आप के साथ मेल खाते हैं केवल सिंगल-चरित्र तार

हो shoud
+1

वास्तव में? यह PHP मैनुअल में प्रलेखन से बहुत स्पष्ट नहीं है: -/ रेगेक्स युक्तियों के लिए भी धन्यवाद :) मैं इस के साथ चारों ओर झुकाऊंगा। – Iris

+0

सामान्य रूप से नियमित रूप से और PHP में, आप देख सकते हैं: http://www.regular-expressions.info/tutorial.html और http://www.regular-expressions.info/php। एचटीएमएल इस साइट ने मुझे बहुत मदद की। – Cranio

+0

धन्यवाद! और कोड सरणी जोड़ने के बाद अब काम करता है। – Iris