2016-05-10 12 views
5

समाप्त होने के सीमा के साथ एक स्ट्रिंग में उप स्ट्रिंग के अंतिम घटना की स्थिति का पता लगाने मैं की तरहसूचकांक

$string="abc @def @xyz $ @def @xyz"; 

एक स्ट्रिंग अब मैं $ से पहले @ का अंतिम बार होने का सूचकांक प्राप्त करना चाहते है।

वर्तमान में मैं

strrpos($string,'@'); 
उपयोग कर रहा हूँ

strrpos की तीसरी पैरामीटर, सूचकांक शुरू कर दिया जाएगा हम सूचकांक समाप्त होने दे सकते हैं?

+0

ठीक है, बस ऑफसेट के रूप में अंतिम '$' चिह्न की स्थिति प्राप्त करें। – Rizier123

+0

यह खोज की अनुक्रमणिका शुरू करने पर विचार करेगा, मैं $ से पहले की अनुक्रमणिका चाहता हूं। –

+0

क्या होगा यदि स्ट्रिंग '" abc @def @xyz $ @def @xyz $ @bca "' होगी? – RomanPerekhrest

उत्तर

5

strrpos का उपयोग करके आप अंतिम घटना प्राप्त कर सकते हैं। अधिक के बारे में function.strrpos

उद्देश्य के लिए, आप $ के साथ अपने स्ट्रिंग विस्फोट और पहले index विस्फोट सरणी के लिए strrpos के आवेदन शुरू करने के लिए की जरूरत है।

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

$string="abc @def @xyz $ @def @xyz"; 
$strArr = explode('$', $string); 
$pos = strrpos($strArr[0], "@"); 

if ($pos === false) { // note: three equal signs 
    echo 'Not Found!'; 
}else 
    echo $pos; //Output 9 this case 
+1

धन्यवाद @Frayne। –

2

एक अन्य विकल्प: -

$string="abc @def @xyz $ @def @xyz"; 
$pos = strrpos($string, '@', -strrpos($string, '$')); 
if($pos === false){ 
    echo 'Not Found!'; 
}else{ 
    echo $pos; // 9 
} 

नोट: - नकारात्मक संकेत $ साइन पहले पिछले की '@' सूचकांक वापस आ जाएगी।

+1

मुझे पहले इस स्ट्रिंग को विस्फोट करने से पहले यह समाधान बहुत अधिक सुरुचिपूर्ण लगता है – brense