2010-01-25 14 views
17

मैं अपने उपयोगकर्ताओं को न केवल अक्षरों और संख्याओं को भरने का विकल्प देना चाहता हूं, बल्कि "विशेष" अक्षरों जैसे "á", "é" इत्यादि भी देना चाहता हूं। हालांकि, मैं नहीं चाहता कि वे सक्षम हों जैसे प्रतीकों का उपयोग करें, "@", "%", आदिमैं PHP preg के साथ उच्चारण वर्णों से कैसे मिलान करूं?

वहाँ एक तरीका यह है, एक regex लिखने के लिए है (अधिमानतः प्रत्येक विशेष पत्र निर्दिष्ट किए बिना।)

अब मेरे पास है "!":

$reg = '/^[\w\-]*$/'; 

उत्तर

29

आप को Unicode character properties इस्तेमाल कर सकते हैं उच्चारण भांप वर्णों का वर्णन करें:

/^[\p{L}-]*$/u 

\p{L} यूनिकोड अक्षर वर्णों की कक्षा का वर्णन करता है।

+0

चाल करने के लिए लगता है। जल्दी जवाब देने का शुक्रिया!! – Maurice

1

किन अक्षरों "शब्द-वर्ण" माना जाता है वातावरण पर निर्भर करता है। आप एक स्थान है जो अपनी नेचुरा में उन लोगों के कैरेक्टर हैं स्थापित करना चाहिए एल वर्णमाला, और इस तरह regexp के लिए /u संशोधक का उपयोग,:

$str = 'perché'; 
setlocale(LC_ALL, '[email protected]'); 
echo preg_match('#^\w+$#u', $str); 
+0

या तो काम नहीं कर रहा है। लेकिन गम्बो का समाधान काम किया। उत्तर के लिए धन्यवाद – Maurice

3

आप इस regex के साथ की कोशिश कर सकते हैं:

$reg = '~[^\\pL\d]+~u'; 

जो भी वर्ण

+0

मेरे सर्वर पर काम नहीं कर रहा है। लेकिन गम्बो का जवाब काम किया। उत्तर के लिए धन्यवाद – Maurice

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