जवाबों:
बहुत ही सरलता से:
$id = substr($url, strrpos($url, '/') + 1);
स्ट्रैप्स को स्लैश की अंतिम घटना की स्थिति मिलती है; substr उस स्थिति के बाद रिटर्न सब कुछ।
Redanimalwar द्वारा उल्लेख के रूप में अगर कोई स्लैश नहीं है तो यह सही ढंग से काम नहीं करता है क्योंकि strrposझूठे रिटर्न देता है। यहाँ एक और अधिक मजबूत संस्करण है:
$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
$str = basename($url)अधिक उठाव नहीं हो रहा है, मेरे लिए पूरी तरह से ठीक काम करता है।
$str = basename($url);
आप "/" के आधार पर विस्फोट कर सकते हैं , और अंतिम प्रविष्टि वापस कर सकते हैं:
print end( explode( "/", "http://www.vimeo.com/1234567" ) );
यह स्ट्रिंग को अलग-अलग उड़ाने पर आधारित है, कुछ ऐसा जो जरूरी नहीं है यदि आप जानते हैं कि स्ट्रिंग का पैटर्न खुद ही जल्द ही बदल नहीं जाएगा। आप वैकल्पिक रूप से, स्ट्रिंग के अंत में उस मान का पता लगाने के लिए एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं:
$url = "http://www.vimeo.com/1234567";
if ( preg_match( "/\d+$/", $url, $matches ) ) {
print $matches[0];
}
explodeहमेशा मेरे लिए अधिक उपरि की तरह लगता है, हालांकि मैंने कभी यह देखने के लिए समय नहीं दिया है कि यह कितना तेज़ है।
आप उपयोग कर सकते हैं substrऔर strrchr:
$url = 'http://www.vimeo.com/1234567';
$str = substr(strrchr($url, '/'), 1);
echo $str; // Output: 1234567
$str = "http://www.vimeo.com/1234567";
$s = explode("/",$str);
print end($s);
array_pop(explode("/", "http://vimeo.com/1234567")); उदाहरण url का अंतिम तत्व लौटाएगा
PHP Notice: Only variables should be passed by reference।
दो एक लाइनर - मुझे संदेह है कि पहला तेज है, लेकिन दूसरा एक प्रीटियर और विपरीत है end()और array_pop(), आप current()किसी भी नोटिस या चेतावनी को उत्पन्न किए बिना सीधे फ़ंक्शन के परिणाम को पास कर सकते हैं क्योंकि यह पॉइंटर को स्थानांतरित नहीं करता है या सरणी को बदलता है।
$var = 'http://www.vimeo.com/1234567';
// VERSION 1 - one liner simmilar to DisgruntledGoat's answer above
echo substr($a,(strrpos($var,'/') !== false ? strrpos($var,'/') + 1 : 0));
// VERSION 2 - explode, reverse the array, get the first index.
echo current(array_reverse(explode('/',$var)));
end()php 5.4+ और इस तरह से नोटिस का उपयोग करना होगा। डॉक्स के अनुसार: " आपको इसे एक वास्तविक वैरिएबल पास करना चाहिए न कि किसी एरे को लौटाने वाला फ़ंक्शन क्योंकि केवल वास्तविक वेरिएबल्स को संदर्भ द्वारा पास किया जा सकता है। "
यहाँ एक सुंदर गतिशील फ़ंक्शन है जो मैंने url या पथ के अंतिम भाग को हटाने के लिए लिखा था।
/**
* remove the last directories
*
* @param $path the path
* @param $level number of directories to remove
*
* @return string
*/
private function removeLastDir($path, $level)
{
if(is_int($level) && $level > 0){
$path = preg_replace('#\/[^/]*$#', '', $path);
return $this->removeLastDir($path, (int) $level - 1);
}
return $path;
}
s($str)->afterLast('/')मदद मिल सकती है , जैसा कि इस स्टैंडअलोन लाइब्रेरी में पाया गया है ।