2011-11-27 13 views
6

की शुरुआत और अंत से विराम चिह्न को हटाएं मैं स्ट्रिंग की शुरुआत और अंत से सभी विराम चिह्नों को हटाने के लिए PHP में नियमित अभिव्यक्ति का उपयोग कैसे कर सकता हूं?PHP preg_replace: स्ट्रिंग

+0

आपके प्रयास को पोस्ट करना भी सहायक है। – ksindi

+1

मैं RegEx के लिए नया हूं, इसलिए मुझे यकीन नहीं है कि कहां से शुरू करना है। – Alasdair

उत्तर

6

मैं एक regex, शायद कुछ की तरह प्रयोग नहीं करेंगे ...

$str = trim($str, '"\''); 

कहाँ दूसरा तर्क है कि तुम क्या परिभाषित है विराम चिह्न के रूप में।

मान लिया जाये कि आप क्या वास्तव में मतलबके लिए किया गया सामान को निकाल देते हैं जो अक्षर, अंक, आदि, मैं साथ ...

$str = preg_replace('/^\PL+|\PL\z/', '', $str); 
+0

इससे भी बेहतर, उस बारे में नहीं सोचा। – Alasdair

+1

दूसरे तर्क के साथ ट्रिम करें जो मैं ढूंढ रहा हूं। – Alasdair

3

यह है कि तुम क्या विराम चिह्न फोन पर निर्भर करता है, लेकिन:

preg_replace('/^\W*(.+?)\W*$/', '$1', $source); 
+0

यह एक दिलचस्प रेगेक्स है ... आपको यकीन है कि काम करने जा रहा है? – alex

+0

@alex: नहीं। अब फिक्स्ड :) लेकिन 'ट्रिम' वैसे भी बेहतर है। – Ryan

+0

मुझे अभी भी लगता है कि यह थोड़ा सा है, शायद आप उन वर्णों को एक चरित्र वर्ग के अंदर रखना चाहते हैं, उदा। '[;।]'। – alex

0

जाना चाहते हैं केवल अक्षरांकीय वर्ण

रखने के लिए नहीं है
preg_replace('/[^a-z0-9]+/i', '', $string); 
सभी ponctuations के लिए

:

preg_replace('[:punct:]+', '', $string); 
5

विराम चिह्न की आपकी परिभाषा पर निर्भर हो सकता है। यदि यह "अल्फान्यूमेरिक्स के अलावा कुछ भी" या ऐसा कुछ है, तो नियमित अभिव्यक्ति जाने का तरीका हो सकता है। लेकिन अगर यह "अवधि, प्रश्न चिह्न, और विस्मयादिबोधक बिंदु" या कुछ अन्य प्रबंधनीय सूची है, तो यह समझना आसान होगा:

trim($string, '?!.'); 
संबंधित मुद्दे