2012-04-20 14 views
6

मुझे | के अलावा किसी भी वर्ण को निर्धारित करने के लिए स्ट्रिंग को जांचने की आवश्यकता है, ताकि वे चर को असाइन करने के लिए | को छोड़कर कुछ भी न हो (सैद्धांतिक रूप से हो सकता है | वर्णों की कोई संख्या लेकिन यह संभवतः 5-6 से अधिक नहीं होगी)। ||||यह जांचने के लिए कि क्या स्ट्रिंग में केवल विशिष्ट वर्ण हैं

मैं स्ट्रिंग या somesuch के प्रत्येक चरित्र के माध्यम से लूपिंग देख सकता था, लेकिन मुझे लगता है कि एक आसान तरीका होना चाहिए।

+1

क्या आप एक स्ट्रिंग का उदाहरण दे सकते हैं जिसे आप जोड़ रहे हैं? – jprofitt

उत्तर

13
if (preg_match('/[^|]/', $string)) { 
    // string contains characters other than | 
} 

या:

if (strlen(str_replace('|', '', $string)) > 0) { 
    // string contains characters other than | 
} 
+4

ओह यह मुझे रेगेक्स को नहीं जानना जारी रखता है! : पी – Damon

+0

पहला समाधान "\ n |" पर विफल रहता है क्योंकि डिफ़ॉल्ट रेगेक्स द्वारा कई लाइनों को पार नहीं किया जाता है – giorgiosironi

2

हाँ, आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

if(! preg_match('/[^\|]/', $string)) { 
    $string = NULL; 
} 
0

सबसे तेज और आसान तरीका संभवतः stripos कार्य है। यह एक और अंदर एक स्ट्रिंग की स्थिति, या गलत रिटर्न अगर यह नहीं पाया जा सकता है:

if (false === stripos($string, '|')) { 
    $string = null; 
} 

false === सख्त प्रकार की तुलना के लिए की जरूरत है, के बाद से stripos एक शून्य है कि यह दर्शाता है लौट सकते हैं | पहले चार पर है।

आप एक और अधिक परिष्कृत मान्यता इंजन है कि पढ़ने में सरल बनाता है उपयोग कर सकते हैं। मैं Respect\Validation की सिफारिश करता हूं। उपयोग नमूना:

if (v::not(v::contains('|'))->validate($string)) { 
    $string = null; 
} 
+1

* इसमें शामिल नहीं है * * के अलावा कुछ भी नहीं है * ... – deceze

1

मैं जांचना चाहता था कि स्ट्रिंग में केवल कुछ वर्ण हैं या नहीं। डबल निषेध को रोकने के लिए (क्योंकि मुझे लगता है उन्हें कठिन ते पढ़ें) मैं निम्नलिखित regex का उपयोग करने का फैसला किया: इसमें केवल | वर्ण (कम से कम एक) को समाप्त करने के लिए

preg_match('/^[|]+$/', $string) 

यह शुरू से ही एक स्ट्रिंग की जाँच करता है।

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

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