मुझे एक स्ट्रिंग का अंतिम चरित्र प्राप्त करने की आवश्यकता है। कहते हैं कि मेरे पास इनपुट स्ट्रिंग के रूप में "परीक्षक" हैं और मैं चाहता हूं कि परिणाम "s" हो। मैं PHP में कैसे कर सकता हूँ?
मुझे एक स्ट्रिंग का अंतिम चरित्र प्राप्त करने की आवश्यकता है। कहते हैं कि मेरे पास इनपुट स्ट्रिंग के रूप में "परीक्षक" हैं और मैं चाहता हूं कि परिणाम "s" हो। मैं PHP में कैसे कर सकता हूँ?
जवाबों:
substr("testers", -1); // returns "s"
या, मल्टीबाइट्स स्ट्रिंग्स के लिए:
substr("multibyte string…", -1); // returns "…"
mb_substr
( php.net/mb_substr ) के बजाय।
या डायरेक्ट स्ट्रिंग एक्सेस द्वारा :
$string[strlen($string)-1];
ध्यान दें कि यह मल्टीबाइट स्ट्रिंग्स के लिए काम नहीं करता है। यदि आपको मल्टीबाइट स्ट्रिंग के साथ काम करने की आवश्यकता है, तो फ़ंक्शन के स्ट्रिंग परिवार का उपयोग करने पर विचार करें mb_*
।
PHP के रूप में 7.1.0 नकारात्मक संख्यात्मक सूचकांक भी समर्थित हैं, उदाहरण के लिए $string[-1];
PHP 7.1 से आप ऐसा कर सकते हैं ( नकारात्मक स्ट्रिंग ऑफसेट के लिए स्वीकृत आरएफसी ):
<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3}; // <-- this will be deprecated in PHP 7.4
die();
मैं आपको आउटपुट का अनुमान लगाता हूँ।
इसके अलावा, मैंने इन परिणामों के साथ इसे xenonite के प्रदर्शन कोड में जोड़ा :
पदार्थ () में 7.0334868431091 सेकेंड लिया गया
सरणी का उपयोग 2.3111131191254 वर्ग सेकंड में हुआ
डायरेक्ट स्ट्रिंग ऐक्सेस (निगेटिव स्ट्रिंग ऑफसेट) ने 1.7971360683441 सेकेंड लिया
मैं टिप्पणी नहीं छोड़ सकता, लेकिन फास्टट्रैक के उत्तर के संबंध में, यह भी याद रखें कि समाप्त होने वाली लाइन केवल एकल वर्ण हो सकती है। मै सुझाव दूंगा
substr(trim($string), -1)
संपादित करें: नीचे दिया गया मेरा कोड किसी के द्वारा संपादित किया गया था, जिससे यह नहीं हुआ कि मैंने क्या संकेत दिया था। मैंने अपना मूल कोड बहाल कर दिया है और इसे और अधिक स्पष्ट करने के लिए शब्दों को बदल दिया है।
trim
(या rtrim
) सभी व्हाट्सएप को हटा देगा , इसलिए यदि आपको किसी स्थान, टैब या अन्य व्हाट्सएप की जांच करने की आवश्यकता है, तो पहले विभिन्न लाइन एंडिंग्स को मैन्युअल रूप से बदलें:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
PHP 7.1.0 के रूप में, नकारात्मक स्ट्रिंग ऑफ़सेट भी समर्थित हैं। इसलिए, यदि आप समय के साथ रहते हैं, तो आप इस तरह से स्ट्रिंग में अंतिम वर्ण तक पहुँच सकते हैं:
$str[-1]
एक @mickmackusa के अनुरोध पर, मैं आवेदन के संभावित तरीकों के साथ अपना उत्तर देता हूं:
<?php
$str='abcdef';
var_dump($str[-2]); // => string(1) "e"
$str[-3]='.';
var_dump($str); // => string(6) "abc.ef"
var_dump(isset($str[-4])); // => bool(true)
var_dump(isset($str[-10])); // => bool(false)
मैं गॉर्डन के समाधान के लिए जाने की सलाह दूंगा क्योंकि यह पदार्थ () की तुलना में अधिक प्रदर्शनकारी है:
<?php
$string = 'abcdef';
$repetitions = 10000000;
echo "\n\n";
echo "----------------------------------\n";
echo $repetitions . " repetitions...\n";
echo "----------------------------------\n";
echo "\n\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = substr($string, -1);
echo "substr() took " . (microtime(true) - $start) . "seconds\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = $string[strlen($string)-1];
echo "array access took " . (microtime(true) - $start) . "seconds\n";
die();
कुछ इस तरह का उत्पादन
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
याद रखें, यदि आपके पास एक स्ट्रिंग है जिसे पाठ फ़ाइल से एक पंक्ति के रूप में पढ़ा गया था जिसका उपयोग किया गया था fgets()
फ़ंक्शन उपयोग करने की आवश्यकता है substr($string, -3, 1)
ताकि आपको वास्तविक वर्ण मिल जाए और CRLF (कैरिज रिटर्न लाइन फीड) का हिस्सा न हो।
मुझे नहीं लगता कि सवाल पूछने वाले को इसकी आवश्यकता थी, लेकिन मेरे लिए, मुझे एक पाठ फ़ाइल से एक स्ट्रिंग से उस अंतिम चरित्र को प्राप्त करने में परेशानी हो रही थी, इसलिए मुझे यकीन है कि अन्य समान समस्याएं आएंगी।
आप मूल () और mb_substr () जैसे कई तरीकों से php का उपयोग करके अंतिम वर्ण पा सकते हैं ।
आप UTF-8 की तरह multibyte वर्ण एन्कोडिंग का उपयोग कर रहे हैं, का उपयोग mb_substr के बजाय substr
यहाँ मैं आपको दोनों उदाहरण दिखा सकता हूँ:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
सी तेज और PHP सहित विभिन्न भाषाओं में एक स्ट्रिंग भी वर्णों की एक सरणी माना जाता है।
यह जानकर कि थ्योरी में ऑपरेशन स्ट्रिंग से ज्यादा तेज होने चाहिए जो आप कर सकते हैं,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
हालाँकि, मानक सरणी फ़ंक्शंस जैसे
count();
एक तार पर काम नहीं करेगा।
सिमेंटो, चयनित निर्देशिका से केवल php फाइलें प्राप्त करें:
$dir = '/home/zetdoa/ftp/domeny/MY_DOMAIN/projekty/project';
$files = scandir($dir, 1);
foreach($files as $file){
$n = substr($file, -3);
if($n == 'php'){
echo $file.'<br />';
}
}
s($str)->end()
मदद मिल सकती है , जैसा कि इस स्टैंडअलोन लाइब्रेरी में पाया गया है ।