2013-02-27 6 views
9

मुझे यह समान प्रश्न मिला, लेकिन यह मेरे प्रश्न का उत्तर नहीं देता, Split word by capital letterPHP में पूंजी अक्षरों पर विभाजित?

मेरे पास एक स्ट्रिंग है जो camel case है। मैं नीचे की तरह प्रत्येक पूंजी पत्र पर उस स्ट्रिंग को तोड़ना चाहता हूं।

$str = 'CamelCase'; // array('Camel', 'Case'); 

मैं इतनी दूर मिल गया है:

$parts = preg_split('/(?=[A-Z])/', 'CamelCase'); 

लेकिन जिसके परिणामस्वरूप सरणी हमेशा शुरुआत में एक खाली मूल्य के साथ समाप्त होता है! $parts इस

$parts = array('', 'Camel', 'Case'); 

मैं कैसे सरणी की शुरुआत में रिक्त मान से छुटकारा पा सकते तरह लग रहा है?

उत्तर

14

आप इस तरह PREG_SPLIT_NO_EMPTY ध्वज का उपयोग कर सकते हैं:

$parts = preg_split('/(?=[A-Z])/', 'CamelCase', -1, PREG_SPLIT_NO_EMPTY); 

documentation for preg_split देखें।

2

सरणी फिल्टर सभी खाली मान निकालने के लिए किया जा सकता है:

$parts = array_filter($parts, 'strlen'); 
+1

वह सही सरणी उत्पन्न करना चाहता है, टूटे हुए को ठीक नहीं करना। – Will

+1

कर के जवाब को देखते हुए यह सबसे अच्छा जवाब नहीं है, लेकिन मेरी रक्षा में, पूछताछ ने विशेष रूप से पूछा "मैं सरणी की भिक्षा पर खाली मूल्य से कैसे छुटकारा पा सकता हूं?" – Jim

3

आप एक सकारात्मक-lookbehind की जरूरत है। इसे आज़माएं:

$parts = preg_split('/(?<=\\w)(?=[A-Z])/', 'CamelCase') 

array(2) { 
    [0]=> 
    string(5) "Camel" 
    [1]=> 
    string(4) "Case" 
} 
+1

अच्छा दृष्टिकोण, लेकिन @ कर ने इसे जीत लिया, धन्यवाद! – ShaShads

+0

'सी कैमेलकेस' के साथ काम नहीं करने लगता है, यदि रिक्त स्थान हो तो समायोजन की आवश्यकता हो सकती है। –

+0

@ वेस्ले, रिक्त स्थान मूल आवश्यकता में नहीं थे, लेकिन यह काम करेगा: preg_split ('/ (?: (? <= \\ w) (? = [ए-जेड]) |) /', 'सी कैमेलकेस') – Will

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