2009-08-26 10 views
8

अगर मैं इस तरह की एक स्ट्रिंग है:php: स्ट्रिंग से ब्रैकेट/सामग्री हटाएं?

$str = "blah blah blah (a) (b) blah blah blah"; 

मैं कैसे regex कर सकते हैं ताकि उत्पादन होता है:

$str = "blah blah blah blah blah blah"; 

यह एक स्ट्रिंग के अंदर ब्रैकेट जोड़े के किसी भी संख्या का समर्थन करने में सक्षम हो की जरूरत है।

उत्तर

36

इस चाल करना चाहिए:

$str = trim(preg_replace('/\s*\([^)]*\)/', '', $str)); 

ध्यान दें, यह जवाब भी ब्रैकेट चारों ओर खाली स्थान के निकाल देता है, अन्य सुझावों के विपरीत है।

ट्रिम एक ब्रैकेट वाले सेक्शन के साथ शुरू होने पर ट्रिम होता है, इस स्थिति में व्हाइटस्पेस को इसके बाद हटाया नहीं जाता है।

+0

ध्यान दें कि यह "(())" या किसी भी असंतुलित कोष्ठक के लिए तोड़ देगा, लेकिन यह कोई समस्या नहीं हो सकती है। – Mark

1
$string = preg_replace('~\(.*?\)~', '', $string); 
3

इस प्रयास करें:

preg_replace('/\([^)]*\)|[()]/', '', $str) 
संबंधित मुद्दे