2010-11-19 20 views
36

क्या सबसे तेज़ तरीका है इस तरह एक स्ट्रिंग से केवल important_stuff हिस्सा पाने के लिए है:एक स्ट्रिंग से एक स्ट्रिंग के बाद स्ट्रिंग जाओ

bla-bla_delimiter_important_stuff 

_delimiter_ हमेशा वहाँ है, लेकिन स्ट्रिंग के बाकी को बदल सकते हैं ।

+1

इस बात पर कुछ भ्रम प्रतीत होता है कि क्या अंडरस्कोर सचमुच वहां हैं या नहीं। नीचे कोई समाधान अच्छा है। –

+0

आपको ['s ($ str) -> बाद में ('_delimiter_') '] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L435) मिल सकता है या ['s ($ str) -> बाद में ('_delimiter_')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L445) सहायक, जैसा [इस स्टैंडअलोन लाइब्रेरी] में पाया गया (https://github.com/delight-im/PHP-Str)। – caw

उत्तर

54
यहाँ

:

$arr = explode('delimeter', $initialString); 
$important = $arr[1]; 
+1

सरल और प्रभावी, अच्छा जवाब। – jsims281

+6

PHP 5.4 में ... विशेष रूप से इस मामले के लिए ... आप निम्न एक लाइनर कर सकते हैं ... '$ महत्वपूर्ण = विस्फोट (" delimeter ", $ प्रारंभिक स्ट्रिंग) [1];' – zgr024

+5

dereferencing के लिए 3 चीयर्स! = डी –

4
$string = "bla-bla_delimiter_important_stuff"; 
list($junk,$important_stufF) = explode("_delimiter_",$string); 

echo $important_stuff; 
> important_stuff 
+2

मुझे सूची का उपयोग पसंद है। जब आपके पास पहली बार सरणी थी तो मैंने सोचा था कि आपने मुझे php की एक पायथन जैसी क्षमता दिखायी है जिसे मैं नहीं जानता था! –

+0

ठंडा। धन्यवाद :) – Alex

6
 
$importantStuff = array_pop(explode('_delimiter_', $string)); 
+1

यह एक 'E_STRICT' त्रुटि फेंक देगा ('सख्त मानकों: केवल चर संदर्भ संदर्भ द्वारा पारित किया जाना चाहिए) क्योंकि array_pop संदर्भ का उपयोग करता है, लेकिन यह अभी भी काम करता है। –

30
$result = end(explode('_delimiter_', 'bla-bla_delimiter_important_stuff')); 
+0

बहुत स्मार्ट समाधान। – andcl

+1

यह फेंक देगा: सख्त मानकों: संदर्भ द्वारा केवल चर पारित किया जाना चाहिए। आपको विस्फोट() को एक temp var को असाइन करना होगा। –

4

मैं इस विधि की तरह: स्ट्रिंग के अंत तक

$str="bla-bla_delimiter_important_stuff"; 
$del="_delimiter_"; 
$pos=strpos($str, $del); 

सीमांकक के अंत से काटने

$important=substr($str, $pos+strlen($del)-1, strlen($str)-1); 

ध्यान दें:

1) substr के लिए जबकि strpos & के लिए strlen स्ट्रिंग (के आकार लेता है '0' पर स्ट्रिंग शुरू में शुरू होता है '1')

2) 1 चरित्र सीमांकक शायद का उपयोग कर एक अच्छा विचार