একটি নির্দিষ্ট চরিত্রের পরে কীভাবে সবকিছু পাবেন?


140

আমি একটি স্ট্রিং পেয়েছি এবং আমি একটি নির্দিষ্ট মান পরে সব পেতে চাই। স্ট্রিং সর্বদা সংখ্যার সেট এবং তারপরে একটি আন্ডারস্কোর দিয়ে শুরু হয়। আমি আন্ডারস্কোরের পরে বাকী স্ট্রিংটি পেতে চাই। সুতরাং উদাহরণস্বরূপ যদি আমার কাছে নিম্নলিখিত স্ট্রিং থাকে এবং আমি কী ফিরে আসতে চাই:

"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"

আমি এই জাতীয় কিছু করতে কীভাবে যেতে পারি?

উত্তর:


333

strpos()খুঁজে বের করে আন্ডারস্কোর অফসেট, তারপর substr সূচকের প্লাস 1 থেকে সবকিছু grabs, অগ্রে।

$data = "123_String";    
$whatIWant = substr($data, strpos($data, "_") + 1);    
echo $whatIWant;

আপনি যদি এটি পরীক্ষা করে দেখার আগে আন্ডারস্কোর অক্ষর ( _) আপনার স্ট্রিংয়ে বিদ্যমান কিনা তাও যদি আপনি দেখতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

if (($pos = strpos($data, "_")) !== FALSE) { 
    $whatIWant = substr($data, $pos+1); 
}

2
আন্ডারস্কোরটি উপস্থিত রয়েছে কিনা তা যাচাই করা ভাল কি তা যেমন itsচ্ছিক।
জন ম্যাগনোলিয়া

2
@ জনম্যাগনোলিয়া: তারপরে আপনি কেবল ব্যবহার করতে পারেনif (($pos = strpos($data, "_")) !== FALSE) { $whatIWant = substr($data, $pos+1); }
অমল মুরালি

11
@JohnMagnolia অথবা একটি সামান্য অভিনব এক-লাইনের: substr($data, (strrpos($data, '_') ?: -1) +1)
ফ্লু

2
@ ফ্লু আমি মনে করি আপনি বলতে চেয়েছিলেন, পড়া আরও কঠিন। আইএমও, কম রেখার অর্থ ফ্যানসিয়ার নয়।
এমএইচ

এই ফাংশনটি স্ট্রিংটি কিছু স্ট্রিং / চর বা মিথ্যা function StrAfterStr($S, $H) { return (($P = strpos($S, $H)) !== false) ? substr($S, $P + 1) : false; }
সূত্রের সন্ধান পেলে ফিরে আসবে

14

strtokএই ধরণের জিনিস জন্য একটি উপেক্ষিত ফাংশন। এটি বেশ দ্রুত হওয়া বোঝায়।

$s = '233718_This_is_a_string';
$firstPart = strtok( $s, '_' );
$allTheRest = strtok( '' ); 

এই জাতীয় খালি স্ট্রিং বাকী স্ট্রিংগুলি ফিরে আসতে বাধ্য করবে।

এনবি যদি '_' এর পরে কিছু না থাকে তবে আপনি একটি FALSEমান পাবেন $allTheRest, যার জন্য ডকুমেন্টেশনে বর্ণিত হয়েছে , অন্যান্য মিথ্যা মানগুলি থেকে আলাদা করার জন্য === দিয়ে পরীক্ষা করতে হবে।


3
সতর্কতা অবলম্বন করুন: স্ট্রিংকের পরে স্ট্রিংয়ের অংশটি ফিরে আসবে যদি এটি স্ট্রিংয়ের প্রথম অক্ষর হয়, যেমন strtok('a_b', '_')ফিরে আসবে aতবে strtok('_b', '_')ফিরে আসবে b, যেমনটি আপনি আশা করেছিলেন খালি স্ট্রিং নয়
কুইন কমেন্ডেন্ট

9

এখানে ব্যবহার করে পদ্ধতিটি explode:

$text = explode('_', '233718_This_is_a_string', 2)[1]; // Returns This_is_a_string

বা:

$text = @end((explode('_', '233718_This_is_a_string', 2)));

ইন প্যারামিটারের 2জন্য নির্দিষ্ট করে , এটি স্ট্রিং ডিলিমিটার দ্বারা পৃথক 2 সর্বাধিক উপাদানগুলির সাথে অ্যারে প্রদান করে। ২ য় উপাদান ( ) ফেরত দেওয়া হলে বাকী স্ট্রিং দেবে।limitexplode()[1]


এখানে আরও একটি ওয়ান-লাইনার ব্যবহার করে strpos( @ ফ্লু দ্বারা প্রস্তাবিত ):

$needle = '233718_This_is_a_string';
$text = substr($needle, (strpos($needle, '_') ?: -1) + 1); // Returns This_is_a_string

2

যদি কাউকে যদি স্ট্রিংয়ের প্রথম অংশটি বের করতে হয় তবে চেষ্টা করতে পারেন,

প্রশ্ন:

$s = "This_is_a_string_233718";

$text = $s."_".substr($s, 0, strrpos($s, "_"));

আউটপুট:

This_is_a_string



1
$string = "233718_This_is_a_string";
$withCharacter = strstr($string, '_'); // "_This_is_a_string"
echo substr($withCharacter, 1); // "This_is_a_string"

একক বিবৃতিতে এটি হবে।

echo substr(strstr("233718_This_is_a_string", '_'), 1); // "This_is_a_string"

0

আমি strrchr () ব্যবহার করি। উদাহরণস্বরূপ আমি এই ফাংশনটি ব্যবহার করি এমন কোনও ফাইলের এক্সটেনশান সন্ধান করতে:

$string = 'filename.jpg';
$extension = strrchr( $string, '.'); //returns ".jpg"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.