2012-07-04 13 views
50

का उपयोग कर सभी गैर-अल्फान्यूमेरिक वर्णों को हटाएं PHP में स्ट्रिंग से सभी गैर अल्फान्यूमेरिक वर्णों को मैं कैसे हटा सकता हूं?preg_replace

$url = preg_replace('/\s+/', '', $string); 

यह केवल खाली रिक्त स्थान की जगह:

इस कोड, कि मैं वर्तमान में उपयोग कर रहा हूँ है।

+1

संभावित डुप्लिकेट [मैं स्ट्रिंग में गैर अल्फान्यूमेरिक वर्ण कैसे हटा सकता हूं? (ß, Ê, आदि सहित)] (http://stackoverflow.com/questions/7271607/how-do-i-remove-non-alphanumeric-characters-in-a-string-including-ss-e-etc) – mario

+0

@ मारियो: यह थोड़ा अलग है क्योंकि यह यूनिकोड से संबंधित है। मुझे यकीन है कि एक सही डुप्लिकेट मौजूद है ... –

+0

संभावित डुप्लिकेट [गैर-अल्फान्यूमेरिक वर्णों को निकालें] (http://stackoverflow.com/questions/659025/remove-non-alphanumeric-characters) – trejder

उत्तर

101
$url = preg_replace('/[^\da-z]/i', '', $string); 
+6

[यह उत्तर यूनिकोड का समर्थन करता है ] (http://stackoverflow.com/a/17151182/99923) – Xeoncross

+10

यदि किसी और को पहली बार Xeoncross की टिप्पणी द्वारा पहली बार भ्रमित कर दिया गया था, तो उसका मुद्दा यह था कि उत्तर * यूनिकोड वर्णों का समर्थन नहीं करता है। लेकिन ज़ेनक्रॉस के लिंक * समाधान * में समाधान। – orrd

4
preg_replace('/[\s\W]+/', '', $string) 

काम करने के लिए लगता है, वास्तव में उदाहरण preg_replace

+1

ध्यान रखें कि यह * अंडरस्कोर रखेगा क्योंकि उन्हें शब्द वर्ण माना जाता है और –

+0

को स्पेस भी रखता है, मुझे अंडरस्कोर के बारे में पता नहीं था, लेकिन यह रिक्त स्थान नहीं रख रहा है। – lisovaccaro

3
$alpha = '0-9a-z'; // what to KEEP 
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive 

$string = preg_replace($regex, '', $string); 
13

पर पीएचपी दस्तावेज में था पहले तो ले इस मैं कैसे करना चाहते हैं यह

$str = '[email protected]#[email protected]#$^@#$Hello%#$'; 

$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str); 

var_dump($outcome); 
//string(11) "qwertyHello" 

आशा यह है मदद करता है!

+1

यह गैर-लैटिन अक्षरों के लिए काम नहीं करेगा –

12
नहीं

यकीन है कि क्यों कोई और नहीं एक इस सुझाव दिया है, लेकिन यह सबसे सरल regex हो रहा है:

preg_replace("/\W|_/", "", $string) 

आप यहाँ कार्रवाई में इसे देख सकते हैं, भी: http://phpfiddle.org/lite/code/0sg-314

+1

एक ही समय में सबसे सरल और कुशल 'preg_replace ("/[\ W _] +/"," "$ string) है। –

1

आप उपयोग कर सकते हैं,

$url = preg_replace('/[^\da-z]/i', '', $string); 

आप यूनिकोड वर्ण के लिए उपयोग कर सकते हैं,

$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string); 
संबंधित मुद्दे