2012-04-22 11 views
5

मुझे पता है कि ctype_alpha फ़ंक्शन है, हालांकि स्ट्रिंग में स्पेस (व्हाइट स्पेस कैरेक्टर) होने पर यह FALSE लौटाएगा।PHP में रिक्त स्थान के साथ एकमात्र वर्णमाला स्ट्रिंग के लिए वैध कैसे करें?

मैं अल्फा वर्णों और रिक्त स्थानों को कैसे अनुमति दूं, लेकिन कुछ और नहीं?

+0

चेकिंग से पहले किसी संख्या के साथ रिक्त स्थान बदलें? – DanRedux

+0

@DanRedux जो केवल तभी काम करता है जब स्ट्रिंग में पहले संख्याएं न हों। –

+0

क्यों? यदि इसमें पहले से संख्याएं हैं, तो यह झूठी सही ढंग से वापस आ जाएगी। यदि इसमें संख्याएं हैं, तो यह झूठी सही ढंग से वापस आ जाएगी .. केवल एक चीज यह है कि वे खराब टोकन में बदलकर खराब टोकन के रूप में रिक्त स्थान का इलाज करें। – DanRedux

उत्तर

5
$is_alpha_space = ctype_alpha(str_replace(' ', '', $input))); 

या

$is_alpha_space = preg_match('/^[a-z\s]*$/i', $input); 
+0

बहुत बहुत धन्यवाद। मैं पहले वाले को पसंद करता हूं। मैं सिर्फ सीखने के उद्देश्यों के लिए सोच रहा हूं, आप पहले व्यक्ति के बारे में कैसे जानते हैं? क्योंकि मैं दस्तावेज द्वारा भी नहीं बता सकता। – Carpet

+0

यह एक समारोह नहीं है। यह रिक्त स्थान को हटाने के लिए 'str_replace()' का उपयोग करता है और उसके बाद यह देखने के लिए 'ctype_alpha()' का उपयोग करता है कि इसका परिणाम वर्णानुक्रमिक है। – dtbarne

+0

मुझे समझ में आता है, हालांकि आप इसके बारे में कैसे जानते हैं, जब प्रलेखन में प्रकार का पृष्ठ इसे इंगित नहीं करता है (कि आप ऐसा कर सकते हैं), या यह करता है? मैं नहीं कह सकता। – Carpet

2
if (preg_match("^/[a-zA-Z ]+$/", $input)) { 
    // input matches 
} 

डेमो: http://ideone.com/jp6Wi
डॉक्स: http://php.net/manual/en/function.preg-match.php

+0

हालांकि ध्यान रखें कि '[az] 'सिस्टम सिस्टम की लोकेल सेटिंग्स के आधार पर अलग-अलग वर्णों से मेल खा सकता है] (http://stackoverflow.com/questions/1930487/will-az-ever-match-accented-characters-in -preg-PCRE)। –

+0

रेगेक्स में एक टाइपो है। इसे '^ ^' के बजाय '/ ^' से शुरू होना चाहिए। – toxalot

+0

ध्यान दें कि यह नियमित अभिव्यक्ति केवल एक रिक्त स्थान के साथ स्ट्रिंग की अनुमति देगी। यह वांछित परिणाम हो सकता है या नहीं भी हो सकता है। – toxalot

0

ctype_alpha(preg_replace('/\s/', '', $mystring))

भीतरी अभिव्यक्ति रिक्तियों के बिना स्ट्रिंग देता है, और फिर आप ctype_alpha`` का उपयोग आप चाहो

+0

यह ** की श्रेणी के अंतर्गत आता है यदि आपको फैंसी प्रतिस्थापन नियमों की आवश्यकता नहीं है, तो आपको हमेशा 'preg_replace'' के बजाय 'str_replace' का उपयोग करना चाहिए। ** – toxalot

0

रिक्त स्थान को हटाने का तरीका है, लेकिन याद रखें कि ctype_alpha परिणाम इन दिनों खाली स्ट्रिंग पर झूठे हैं! जिस विधि का मैं उपयोग करता हूं उसके नीचे ...

function validateAlpha($valueToValidate, $spaceAllowed = false) { 
    if ($spaceAllowed) { 
     $valueToValidate = str_replace(' ', '', $valueToValidate); 
    } 
    if (strlen($valueToValidate) == 0) { 
     return true; 
    } 
    return ctype_alpha($valueToValidate); 
} 
संबंधित मुद्दे