2012-03-01 11 views

उत्तर

15

मान लिया जाये कि आप $search स्ट्रिंग से दोनों ( और ) निकालना चाहते हैं:

$search = preg_replace('/\(|\)/','',$search); 

मुझे लगता है कि यह करने के लिए सबसे तेज़ तरीका उपयोग कर रहा है strtr फ़ंक्शन, इस तरह:

$search = strtr($search, array('(' => '', ')' => '')); 
+0

आह, धन्यवाद। यह काम कर रहा है। – Norse

+0

आपको अतिरिक्त रैपिंग की आवश्यकता नहीं है '()' यह पैटर्न को निर्यात करने के लिए है जो इस मामले में अनियंत्रित है। –

+0

@ टोनी: वास्तव में! मैंने उन्हें हटा दिया है। –

0

यह उचित वाक्यविन्यास है, हालांकि preg_replace नियमित अभिव्यक्तियों के लिए है, अगर आप () को प्रतिस्थापित करना चाहते हैं तो str_replace दो गुना तेज है।

आप ( या ) जहाँ भी वे कर रहे हैं, तो आप इस्तेमाल कर सकते हैं

preg_replace("/\(|\)/", "", $str); 
+0

हाँ, लेकिन आपको स्ट्रिंग के दो बार स्ट्रिंग का उपयोग करना होगा, हालांकि प्रत्येक कोष्ठक के लिए एक? – Norse

+1

यह सच है, लेकिन मुझे यकीन है 5 $ यह अभी भी तेजी से किया जाएगा: पी –

+1

@Tony: 'strtr' समारोह एक बार में कई" str_replaces "बना सकते हैं। मैं इसे मूल टेम्पलेटिंग क्लास में उपयोग करता हूं ... लूप + str_replace के बजाय, केवल एक स्ट्रेट कॉल ... –

1

आप इस तरह मतलब बदलना चाहते हैं?

$search = preg_replace('/[()]/', '', $search); 

यह युग्मन के संबंध में सभी कोष्ठक को तोड़ देगा।

+2

केस-असंवेदनशील कंस्ट्रैसिस? :) –

+0

आम तौर पर यह केवल शुरुआत है ... आदत का बल। :) – Nilpo

9

यहाँ एक छोटे से क्षेत्र परीक्षण के अपने परिणाम हैं:

preg_replace("/\(|\)/", "", $str): 1.590735912323

preg_replace('/[\(\)]/', '', $str): 1.3762638568878

strtr($str, array('(' => '', ')' => '')): 0.84079194068909

str_replace("(", "", str_replace(")", "", $str)): 0.80222821235657

पिछले दो लगभग समान रूप जे ब्रूनी बताया है।

+0

इसे बेंचमार्क में जोड़ें: 'preg_replace ('/[\ (\)]/',' ', $ str);' - और हमें परिणाम बताएं। –

+0

तो, str_replaces के एक जोड़े के लिए एक एकल strtr की तुलना में तेजी है ... यदि सरणी स्ट्रिंग पैरामीटर के एक जोड़े के पक्ष में बचा जा सकता है, हो सकता है यह तेजी से $ str, ') (' होना चाहिए ... 'strtr (, '') '- लेकिन यह वांछित व्यवहार नहीं है ... भी, कई जगहें हैं, निश्चित रूप से strtr जीत जाएगा! :-) –

+0

हाँ, सीमा तेज दिखती है। स्ट्रस्ट्र और str_replace लगभग समान हैं, मुझे वर्तमान परीक्षण में उल्लेखनीय अंतर नहीं मिल सकता है, वे हर बार ऊपर या नीचे जाते हैं .. स्ट्रस्ट्र हालांकि अधिक सुरुचिपूर्ण समाधान होगा। –

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