আমার একটি স্ট্রিংয়ের শেষ চরিত্রটি পাওয়া উচিত। বলুন আমার কাছে ইনপুট স্ট্রিং হিসাবে "পরীক্ষক" আছে এবং আমি ফলাফলটি "গুলি" হতে চাই। আমি কীভাবে পিএইচপি করতে পারি?
আমার একটি স্ট্রিংয়ের শেষ চরিত্রটি পাওয়া উচিত। বলুন আমার কাছে ইনপুট স্ট্রিং হিসাবে "পরীক্ষক" আছে এবং আমি ফলাফলটি "গুলি" হতে চাই। আমি কীভাবে পিএইচপি করতে পারি?
উত্তর:
substr("testers", -1); // returns "s"
বা, মাল্টিবাইটস স্ট্রিংয়ের জন্য:
substr("multibyte string…", -1); // returns "…"
mb_substr
( php.net/mb_substr ) ব্যবহার করুন।
অথবা সরাসরি স্ট্রিং অ্যাক্সেস দ্বারা :
$string[strlen($string)-1];
নোট করুন যে এটি মাল্টিবাইট স্ট্রিংয়ের জন্য কাজ করে না। যদি আপনার মাল্টিবাইট স্ট্রিংয়ের সাথে কাজ করতে হয় তবে ফাংশনের স্ট্রিং পরিবারটি ব্যবহারের বিষয়টি বিবেচনা করুন mb_*
।
পিএইচপি 7.1.0 হিসাবে নেতিবাচক সংখ্যা সূচকগুলিও সমর্থিত, যেমন ঠিক $string[-1];
পিএইচপি 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();
আমি আপনাকে আউটপুট অনুমান করতে দেব।
এছাড়াও, আমি এই ফলাফলগুলির সাথে এটি জেনোনাইটের পারফরম্যান্স কোডে যুক্ত করেছি:
সাবস্ট্রাস্ট () 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);
পিএইচপি 7.1.0 হিসাবে, নেতিবাচক স্ট্রিং অফসেটগুলিও সমর্থিত। সুতরাং, যদি আপনি সময়ের সাথে তাল মিলিয়ে থাকেন তবে আপনি স্ট্রিংয়ের শেষ অক্ষরটি এর মধ্যে অ্যাক্সেস করতে পারেন:
$str[-1]
@ মিকম্যাকুসার অনুরোধে আমি আমার উত্তরটি প্রয়োগের সম্ভাব্য উপায়গুলির সাথে পরিপূরক করছি:
<?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)
যাতে আপনি আসল চরিত্রটি পান এবং সিআরএলএফ (ক্যারিজ রিটার্ন লাইন ফিড) এর অংশ না পেয়ে।
আমি মনে করি না যে প্রশ্নটি জিজ্ঞাসা করেছেন সেটির এটি প্রয়োজন, তবে আমার জন্য, আমি একটি শেষ পাঠ্য ফাইল থেকে স্ট্রিং থেকে শেষ চরিত্রটি পেতে সমস্যা হচ্ছিলাম যাতে আমি নিশ্চিত যে অন্যরাও একইরকম সমস্যার মুখোমুখি হবে।
আপনি সাবস্ট্রাস্টার () এবং এমবি_সুবস্ট্র () এর অনেক উপায়ে পিএইচপি ব্যবহার করে শেষ চরিত্রটি খুঁজে পেতে পারেন ।
আপনি যদি ইউটিএফ -8 এর মতো মাল্টিবাইট চরিত্রের এনকোডিংগুলি ব্যবহার করছেন তবে এর পরিবর্তে mb_substr ব্যবহার করুন substr
এখানে আমি আপনাকে দুটি উদাহরণই দেখাতে পারি:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
সি শার্প এবং পিএইচপি সহ বিভিন্ন ভাষায় একটি স্ট্রিংকেও অক্ষরের অ্যারে হিসাবে বিবেচনা করা হয়।
তাত্ত্বিকভাবে অ্যারে ক্রিয়াকলাপগুলি আপনি যে স্ট্রিংগুলি করতে পারেন তার চেয়ে দ্রুত হওয়া উচিত তা জেনেও,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
তবে স্ট্যান্ডার্ড অ্যারে ফাংশনগুলি পছন্দ করে
count();
একটি স্ট্রিং উপর কাজ করবে না।
সিম্যানো, নির্বাচিত ডিরেক্টরি থেকে কেবল পিএইচপি ফাইল পান:
$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()
যেমন পাওয়া যায় আপনি তেমন সহায়ক হতে পারেন ।