এখানে বিশাল সংখ্যক উত্তর সম্পাদিত অংশটির উত্তর দেয় না, আমি অনুমান করি যে সেগুলি আগে যুক্ত হয়েছিল। এটি একটি উত্তর হিসাবে উল্লেখ হিসাবে, regex সঙ্গে সম্পন্ন করা যেতে পারে। আমার একটা আলাদা পন্থা ছিল
এই ফাংশনটি স্ট্রিং অনুসন্ধান করে এবং এর মধ্যে প্রথম স্ট্রিংটি আবিষ্কার করে অফসেট অবস্থান থেকে শুরু করে $ শুরু এবং $ শেষ স্ট্রিংগুলির । এরপরে ফলাফলের শুরুতে নির্দেশ করতে $ অফসেট অবস্থান আপডেট করে। যদি $ অন্তর্ভুক্তডিলিমেটারগুলি সত্য হয় তবে এটি ফলাফলের মধ্যে ডিলিমিটারগুলি অন্তর্ভুক্ত করে।
যদি $ শুরু বা $ প্রান্তের স্ট্রিংটি খুঁজে পাওয়া যায় না, তবে তা শূন্য হয়। এটি ull স্ট্রিং, $ শুরু বা $ প্রান্তটি খালি স্ট্রিং হলে নালও দেয় returns
function str_between(string $string, string $start, string $end, bool $includeDelimiters = false, int &$offset = 0): ?string
{
if ($string === '' || $start === '' || $end === '') return null;
$startLength = strlen($start);
$endLength = strlen($end);
$startPos = strpos($string, $start, $offset);
if ($startPos === false) return null;
$endPos = strpos($string, $end, $startPos + $startLength);
if ($endPos === false) return null;
$length = $endPos - $startPos + ($includeDelimiters ? $endLength : -$startLength);
if (!$length) return '';
$offset = $startPos + ($includeDelimiters ? 0 : $startLength);
$result = substr($string, $offset, $length);
return ($result !== false ? $result : null);
}
নিম্নলিখিত ফাংশনটি দুটি স্ট্রিং (কোনও ওভারল্যাপ নয়) এর মধ্যে থাকা সমস্ত স্ট্রিংগুলি সন্ধান করে । এটির জন্য পূর্ববর্তী ফাংশনটি প্রয়োজন এবং তর্কগুলি একই। মৃত্যুদন্ড কার্যকর হওয়ার পরে, found অফসেটটি সর্বশেষ পাওয়া ফলাফলের স্ট্রিংয়ের শুরুতে নির্দেশ করে।
function str_between_all(string $string, string $start, string $end, bool $includeDelimiters = false, int &$offset = 0): ?array
{
$strings = [];
$length = strlen($string);
while ($offset < $length)
{
$found = str_between($string, $start, $end, $includeDelimiters, $offset);
if ($found === null) break;
$strings[] = $found;
$offset += strlen($includeDelimiters ? $found : $start . $found . $end); // move offset to the end of the newfound string
}
return $strings;
}
উদাহরণ:
str_between_all('foo 1 bar 2 foo 3 bar', 'foo', 'bar')
দেয় [' 1 ', ' 3 ']
।
str_between_all('foo 1 bar 2', 'foo', 'bar')
দেয় [' 1 ']
।
str_between_all('foo 1 foo 2 foo 3 foo', 'foo', 'foo')
দেয় [' 1 ', ' 3 ']
।
str_between_all('foo 1 bar', 'foo', 'foo')
দেয় []
।
\Illuminate\Support\Str::between('This is my name', 'This', 'name');
তবে সুবিধাজনক। laravel.com/docs/7.x/helpers#method-str-between