আমি কেবল ভাবছিলাম যে কীভাবে আমি পিএইচপি-র একটি নির্দিষ্ট সাবস্ট্রিংয়ের পরে সমস্ত কিছু সরিয়ে ফেলতে পারি
উদা:
Posted On April 6th By Some Dude
আমি এটি রাখতে চাই যাতে এটি সমস্ত পাঠ্য সরিয়ে দেয় এবং তারপরে সাব বাই স্ট্রিং "দ্বারা"
ধন্যবাদ
আমি কেবল ভাবছিলাম যে কীভাবে আমি পিএইচপি-র একটি নির্দিষ্ট সাবস্ট্রিংয়ের পরে সমস্ত কিছু সরিয়ে ফেলতে পারি
উদা:
Posted On April 6th By Some Dude
আমি এটি রাখতে চাই যাতে এটি সমস্ত পাঠ্য সরিয়ে দেয় এবং তারপরে সাব বাই স্ট্রিং "দ্বারা"
ধন্যবাদ
উত্তর:
$variable = substr($variable, 0, strpos($variable, "By"));
সরল ইংরাজীতে: স্ট্রিংয়ের অংশটি আমাকে শুরুতে শুরু করুন এবং আপনি যে অবস্থানে প্রথমে ডিলিমিনেটরের মুখোমুখি হোন সে স্থানে শেষ করুন।
আপনি যদি পিএইচপি 5.3+ ব্যবহার করছেন তবে স্ট্রাস্টারের পতাকা পূর্বে_নিডেল দেখুন ()
$s = 'Posted On April 6th By Some Dude';
echo strstr($s, 'By', true);
FALSEস্ট্রিংয়ের অংশটি পাওয়া না গেলে এটি ফিরে আসবে । সুতরাং সমাধানটি হতে পারে:echo strstr($s, 'By', true) ?: $s;
explode(' By', $s)[0]আইএমএইচও হবে
কীভাবে ব্যবহার করবেন explode:
$input = 'Posted On April 6th By Some Dude';
$result = explode(' By',$input);
return $result[0];
সুবিধাদি:
$result[1]ফিরে আসবে Some Dude)একটি পদ্ধতি হ'ল:
$str = 'Posted On April 6th By Some Dude';
echo strtok($str, 'By'); // Posted On April 6th
By, তবে ২ য় প্যারামিটারের কোনও চর দ্বারা। অর্থ, এটি দ্বারা পারেন বিভক্ত হবে Bবা y। প্রযুক্তিগতভাবে, এটি এ এর আগে সবকিছু পাচ্ছে না By।
strtok('a:b', ':')ফিরে আসবে aতবে strtok(':b', ':')ফিরে আসবে b, আপনি যেমন আশা করেছিলেন তেমন খালি স্ট্রিং নয় not
এটা চেষ্টা কর.
function strip_after_string($str,$char)
{
$pos=strpos($str,$char);
if ($pos!==false)
{
//$char was found, so return everything up to it.
return substr($str,0,$pos);
}
else
{
//this will return the original string if $char is not found. if you wish to return a blank string when not found, just change $str to ''
return $str;
}
}
ব্যবহার:
<?php
//returns Apples
$clean_string= strip_after_string ("Apples, Oranges, Banannas",",");
?>
অস্টিনের উত্তর আপনার উদাহরণের ক্ষেত্রে কাজ করে।
আরও সাধারণভাবে, আপনি যখন বিভাজন করছেন সেই স্ট্রিংগুলি স্ট্রিংয়ের মধ্যে পৃথক হতে পারে তখন আপনি নিয়মিত এক্সপ্রেশন ফাংশনগুলি সন্ধান করতে ভাল করবেন :
$ ভেরিয়েবল = প্রেগ_রেপ্লেস ('/ বাই। * /', '', $ ভেরিয়েবল);
আপনি ব্যবহার listএবং explodeফাংশন করতে পারেন :
list($result) = explode("By", "Posted On April 6th By Some Dude", 2);
// $result is "Posted On April 6th "
preg_replace একটি উপায় প্রস্তাব:
$newText = preg_replace('/\bBy.*$/', '', $text);
নিয়মিত অভিব্যক্তি ব্যবহার করে: $string = preg_replace('/\s+By.*$/', '', $string)
প্রথম বাইয়ের পরে স্ট্রিংয়ের মাধ্যমে সমস্ত কিছু কেটে ফেলার জন্য নীচে সবচেয়ে কার্যকর পদ্ধতি (রান-টাইম দ্বারা) is যদি বাই অস্তিত্ব না থাকে তবে সম্পূর্ণ স্ট্রিংটি ফিরে আসে। ফলাফলটি $ এস রেজাল্টে।
$sInputString = "Posted On April 6th By Some Dude";
$sControl = "By";
//Get Position Of 'By'
$iPosition = strpos($sInputString, " ".$sControl);
if ($iPosition !== false)
//Cut Off If String Exists
$sResult = substr($sInputString, 0, $iPosition);
else
//Deal With String Not Found
$sResult = $sInputString;
//$sResult = "Posted On April 6th"
আপনি যদি কেস সংবেদনশীল হতে না চান তবে স্ট্রপোসের পরিবর্তে স্ট্রিপোস ব্যবহার করুন । আপনি যদি মনে করেন বাই দ্বারা একাধিকবার উপস্থিত থাকতে পারে এবং শেষ ঘটনাটির পরে সমস্ত কিছু কাটাতে চান তবে স্ট্রপপস ব্যবহার করুন ।
নীচে একটি কম দক্ষ পদ্ধতি রয়েছে তবে এটি কোডের কম স্থান গ্রহণ করে। এই পদ্ধতিটি আরও নমনীয় এবং আপনাকে কোনও নিয়মিত প্রকাশ করতে দেয়।
$sInputString = "Posted On April 6th By Some Dude";
$pControl = "By";
$sResult = preg_replace("' ".$pControl.".*'s", '', $sInputString);
//$sResult = "Posted On April 6th"
উদাহরণস্বরূপ, আপনি যদি দিনের পরে সমস্ত কিছু সরিয়ে নিতে চান:
$sInputString = "Posted On April 6th By Some Dude";
$pControl = "[0-9]{1,2}[a-z]{2}"; //1 or 2 numbers followed by 2 lowercase letters.
$sResult = preg_replace("' ".$pControl.".*'s", '', $sInputString);
//$sResult = "Posted On April"
সংবেদনশীল ক্ষেত্রে, এই জাতীয় আই মডিফায়ার যুক্ত করুন:
$sResult = preg_replace("' ".$pControl.".*'si", '', $sInputString);
গত গত সবকিছু পেতে কসম ভালো শুরুতে যদি আপনি মনে করেন সেখানে একাধিক হতে পারে, একটি অতিরিক্ত যোগ *।:
$sResult = preg_replace("'.* ".$pControl.".*'si", '', $sInputString);
তবে আপনি এখানে যা করার চেষ্টা করছেন তা করতে প্রাক-ম্যাচ ব্যবহার করতে পারেন এমন একটি শক্তিশালী উপায়ও এখানে:
$sInputString = "Posted On April 6th By Some Dude";
$pPattern = "'Posted On (.*?) By (.*?)'s";
if (preg_match($pPattern, $sInputString, $aMatch)) {
//Deal With Match
//$aMatch[1] = "April 6th"
//$aMatch[2] = "Some Dude"
} else {
//No Match Found
}
নিয়মিত প্রকাশগুলি প্রথমে বিভ্রান্ত বলে মনে হতে পারে তবে আপনি একবারে তাদের আয়ত্ত করার পরে সেগুলি সত্যই শক্তিশালী এবং আপনার সেরা বন্ধু হতে পারে! শুভকামনা!
কেন ...
এটি সম্ভবত বেশিরভাগ মানুষের প্রয়োজনের জন্য ওভারকিল, কিন্তু, এটি বেশ কয়েকটি বিষয়কে সম্বোধন করে যা উপরের প্রতিটি পৃথক উত্তর দেয় না। এটি যে আইটেমগুলিতে সম্বোধন করে তার মধ্যে তিনটি আমার প্রয়োজনের জন্য প্রয়োজন। কড়া বন্ধনী এবং মন্তব্যগুলি ফেলে দেওয়ার পরে, এটি এখনও কোডের কেবল ১৩ টি লাইনে পাঠযোগ্য হতে পারে।
এটি নিম্নলিখিতগুলিকে সম্বোধন করে:
ব্যবহার:
মূল স্ট্রিং, অনুসন্ধান চর / স্ট্রিং, ডান বা বাম দিকে শুরু করার জন্য "আর" / "এল", কেস সংবেদনশীলতার জন্য সত্য / মিথ্যা প্রেরণ করুন। উদাহরণস্বরূপ, "এখানে" কেস সংবেদনশীল, স্ট্রিংয়ের জন্য অনুসন্ধান করুন, ডান দিকটি শুরু করুন।
echo TruncStringAfterString("Now Here Are Some Words Here Now","here","R",false);
আউটপুট হবে "এখন এখানে কিছু শব্দ"। "আর" কে "এল" তে পরিবর্তন করলে আউটপুট আসবে: "এখন"।
ফাংশনটি এখানে:
function TruncStringAfterString($origString,$truncChar,$startSide,$caseSensitive)
{
if ($caseSensitive==true && strstr($origString,$truncChar)!==false)
{
// IF START RIGHT SIDE:
if (strtoupper($startSide)=="R" || $startSide==false)
{ // Found, strip off all chars from truncChar to end
return substr($origString,0,strrpos($origString,$truncChar));
}
// IF START LEFT SIDE:
elseif (strtoupper($startSide)=="L" || $startSide="" || $startSide==true)
{ // Found, strip off all chars from truncChar to end
return strstr($origString,$truncChar,true);
}
}
elseif ($caseSensitive==false && stristr($origString,$truncChar)!==false)
{
// IF START RIGHT SIDE:
if (strtoupper($startSide)=="R" || $startSide==false)
{ // Found, strip off all chars from truncChar to end
return substr($origString,0,strripos($origString,$truncChar));
}
// IF START LEFT SIDE:
elseif (strtoupper($startSide)=="L" || $startSide="" || $startSide==true)
{ // Found, strip off all chars from truncChar to end
return stristr($origString,$truncChar,true);
}
}
else
{ // NOT found - return origString untouched
return $origString; // Nothing to do here
}
}
স্ট্রাস্টার ফাংশনটি ব্যবহার করুন ।
<?php
$myString = "Posted On April 6th By Some Dude";
$result = strstr($myString, 'By', true);
echo $result ;
তৃতীয় প্যারামিটারটি trueদ্বিতীয় প্যারামিটারের প্রথম উপস্থিতির আগে ফাংশনটিকে সবকিছু ফিরিয়ে আনতে বলে।
strtok($str, 'By')আরও সহজ দেখাচ্ছে