2011-12-19 14 views
12

explode() फ़ंक्शन में mb_split() में एक सहसंबंधित मल्टीबाइट-सुरक्षित फ़ंक्शन है।PHP: multibyte तारों के लिए implode() फ़ंक्शन सुरक्षित है?

मुझे implode() के लिए एक सहसंबंधित कार्य नहीं दिखाई देता है। क्या इसका मतलब यह है कि मल्टीबाइट तारों के लिए इंपोडोड पहले ही सुरक्षित है?

+0

मैं एक कठिन समय क्यों वहाँ एक multibyte सुरक्षित होने की जरूरत है समझने आ रही है 'विभाजन() 'पहले स्थान पर - एक स्ट्रिंग को विभाजित करना बहु-बाइट डिफ़ॉल्ट रूप से सुरक्षित है, नहीं? लेकिन यह एक अलग सवाल है। –

+0

PHP सभी स्ट्रिंग्स (AFAIK) को कच्चे बाइनरी बाइट अनुक्रमों के रूप में संग्रहीत करता है, इसलिए सिद्धांत रूप में मल्टीबाइट तारों के साथ 'विस्फोट()' का उपयोग करना संभव होना चाहिए, जब तक कि आप विभाजित टोकन के सही बाइनरी प्रतिनिधित्व को पास करते हैं। इसलिए 'implode() 'पर लागू होता है - जुड़ने वाले द्विआधारी के रूप में पारित बाइनरी अनुक्रम का शाब्दिक रूप से उपयोग किया जाएगा, इसलिए जब तक आपका डेलीमीटर सही ढंग से संग्रहीत होता है, तब तक कोई समस्या नहीं होनी चाहिए। – DaveRandom

+1

@ डेव रैंडम: क्या यह संभव नहीं है कि एक मल्टीबाइट चरित्र दो सिंगल बाइट वर्णों की तरह दिख सके? यदि उन एकल-बाइट वर्णों में से एक डिलीमीटर होता है, तो क्या यह संभव नहीं है कि आप एक मल्टीबाइट चरित्र पर अनजाने में विभाजित हो जाएं? –

उत्तर

6

जब तक आपके डेलीमीटर और सरणी में तारों में केवल अच्छी तरह से गठित मल्टीबाइट अनुक्रम होते हैं तो कोई समस्या नहीं होनी चाहिए।

implode मूल रूप से एक फैंसी संयोजन ऑपरेटर है और मैं एक परिदृश्य में जहाँ संयोजन multibyte सुरक्षित नहीं है कल्पना नहीं कर सकता;)

+2

के बारे में एक प्रश्न पूछ सकता हूं, मुझे इस संदर्भ में "अच्छी तरह से निर्मित मल्टीबाइट अनुक्रम" का पूरा अर्थ नहीं है? (मैं बाकी के साथ सहमत हूं, हालांकि) –

+0

धन्यवाद। मैं एक स्थान का उपयोग एक delimiter के रूप में कर रहा हूँ: 'mb_split ('', $ mbstring)'। क्या यह एक अच्छी तरह से गठित multibyte अनुक्रम का गठन करता है? –

+0

@danielfaraday यह निर्भर करता है कि आपकी स्क्रिप्ट मल्टीबाइट वर्णमाला में संग्रहीत है जो आपकी स्ट्रिंग का उपयोग करती है। यदि यह नहीं है, तो नहीं, यह नहीं है। – DaveRandom

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