উত্তর:
রিজেক্স ছাড়াই সরল রূপ:
$prefix = 'bla_';
$str = 'bla_string_bla_bla_bla';
if (substr($str, 0, strlen($prefix)) == $prefix) {
$str = substr($str, strlen($prefix));
}
লাগে: 0.0369 এমএস (0.000,036,954 সেকেন্ড)
এবং সাথে:
$prefix = 'bla_';
$str = 'bla_string_bla_bla_bla';
$str = preg_replace('/^' . preg_quote($prefix, '/') . '/', '', $str);
নেয়: 0.1749 এমএস (0.000,174,999 সেকেন্ড) 1 ম রান (সংকলন), এবং 0.0510 এমএস (0.000,051,021 সেকেন্ড) এর পরে।
আমার সার্ভারে প্রকাশিত, স্পষ্টতই।
if(condition) { statement }এত পরিষ্কার হয়ে যেত।
if (substr($str, 0, strlen($prefix)) == $prefix) if (0 === strpos($str, $prefix))একই পাঠযোগ্যতা বজায় রেখে অপ্রয়োজনীয় মেমরি বরাদ্দ এড়ানোর জন্য পরিবর্তন করা যেতে পারে :)
আপনি ক্যারেট প্রতীক ( ^) দিয়ে নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন যা স্ট্রিংয়ের শুরুতে ম্যাচটি অ্যাঙ্কর করে:
$str = preg_replace('/^bla_/', '', $str);
substr()সংস্করণের চেয়ে দ্রুত কাজ করে ... আমার ধারণা এটি এটি করে, এবং যথাযথ উত্তর হিসাবে চিহ্নিত করা উচিত।
preg_quote'd
multibyteদুঃস্বপ্ন অন্য সমাধানগুলির সাথে আরেকটি সমস্যা হ'ল যদি ফাইলটির এনকোডিংটি সঠিক হয় তবে এটি ভাল কাজ করে। যাইহোক, এটি এই প্রশ্নের ক্ষেত্রের মধ্যে থাকা উচিত নয় তাই আমি চিন্তা করি না।
substrএবং strposএকটি অ্যারে গ্রহণ করতে পারে না। আপনি যদি যান, আপনি যদি একটি অ্যারের সাথে ডিল করছেন তবে একটি নির্দিষ্ট পারফরম্যান্স লাভ। চিয়ার্স!
function remove_prefix($text, $prefix) {
if(0 === strpos($text, $prefix))
$text = substr($text, strlen($prefix)).'';
return $text;
}
.''প্রয়োজন হয় না।
(substr($str, 0, strlen($prefix)) == $prefix)গ্রহণযোগ্য উত্তরটি এর চেয়ে বেশি ছিল
এখানে.
$array = explode("_", $string);
if($array[0] == "bla") array_shift($array);
$string = implode("_", $array);
_। একটি সাধারণ সংস্করণ আছে?
আমার মনে হয় সাবস্ট্রাস্টার-রিপ্লেসটি আপনি যা চান তা করেন, যেখানে আপনি আপনার প্রতিস্থাপনটিকে আপনার স্ট্রিংয়ের কিছু অংশে সীমাবদ্ধ করতে পারেন: http://nl3.php.net/manual/en/function.substr-replace.php (এটি আপনাকে কেবলমাত্র দেখার জন্য সক্ষম করবে) স্ট্রিং এর শুরু।)
আপনি আরআর_প্লেস ( http://nl3.php.net/manual/en/function.str-replace.php ) এর গণনা প্যারামিটার ব্যবহার করতে পারেন , এটি আপনাকে বাম থেকে শুরু করে প্রতিস্থাপনের সংখ্যা সীমাবদ্ধ করতে দেয়, তবে এটি এটি শুরুতে কার্যকর করা হবে না।
substr_replaceআপনি মুছে ফেলতে চান এমন উপসর্গ কিনা বা অন্য কিছু, নির্ধারিত রেঞ্জের অক্ষরগুলিকে প্রতিস্থাপন করবে। ওপি bla_"স্ট্রিংয়ের শুরুতে এটি পাওয়া গেলেই " সরাতে চায় ।
দুর্দান্ত গতি, তবে এটি _ দিয়ে শেষ হওয়া সূঁচের উপর নির্ভর করে কঠোর কোডিং। একটি সাধারণ সংস্করণ আছে? - টুডমো জুন 29: 26 এ 29
একটি সাধারণ সংস্করণ:
$parts = explode($start, $full, 2);
if ($parts[0] === '') {
$end = $parts[1];
} else {
$fail = true;
}
কিছু মানদণ্ড:
<?php
$iters = 100000;
$start = "/aaaaaaa/bbbbbbbbbb";
$full = "/aaaaaaa/bbbbbbbbbb/cccccccccc/dddddddddd/eeeeeeeeee";
$end = '';
$fail = false;
$t0 = microtime(true);
for ($i = 0; $i < $iters; $i++) {
if (strpos($full, $start) === 0) {
$end = substr($full, strlen($start));
} else {
$fail = true;
}
}
$t = microtime(true) - $t0;
printf("%16s : %f s\n", "strpos+strlen", $t);
$t0 = microtime(true);
for ($i = 0; $i < $iters; $i++) {
$parts = explode($start, $full, 2);
if ($parts[0] === '') {
$end = $parts[1];
} else {
$fail = true;
}
}
$t = microtime(true) - $t0;
printf("%16s : %f s\n", "explode", $t);
আমার বেশ পুরানো হোম পিসিতে:
$ php bench.php
আউটপুট:
strpos+strlen : 0.158388 s
explode : 0.126772 s
এখানে আরও দ্রুত পদ্ধতির:
// strpos is faster than an unnecessary substr() and is built just for that
if (strpos($str, $prefix) === 0) $str = substr($str, strlen($prefix));
এটি যেখানে যেখানে পাওয়া যায় সেখানে প্রথম মিলটি সরিয়ে ফেলবে, যেমন শুরু বা মাঝখানে বা শেষ or
$str = substr($str, 0, strpos($str, $prefix)).substr($str, strpos($str, $prefix)+strlen($prefix));
<?php
$str = 'bla_string_bla_bla_bla';
echo preg_replace('/bla_/', '', $str, 1);
?>
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
এখন আপনি যা চান তা করে
$str = "bla_string_bla_bla_bla";
str_replace("bla_","",$str,1);
str_replace()ফাংশনের $countপ্যারামিটার একটি পরিবর্তনশীল রেফারেন্স দ্বারা পাস প্রতিস্থাপন সংখ্যা খুঁজে পাওয়া হবে বলে আশা করা হয়, প্রতিস্থাপন সংখ্যা সীমিত নয়।
Www সরান। স্ট্রিংয়ের শুরু থেকে, এটি সবচেয়ে সহজ উপায় (এলটিআরএম)
$a="www.google.com";
echo ltrim($a, "www.");
ltrim($a, "w.");ডোমেনটি "w" দিয়ে শুরু না হলেই কাজটি করা হবে। ltrim ('m.google.com', ".omg")ফলাফল le.com।
ltrim, এটি ভুলভাবে ব্যবহৃত হয়। দ্বিতীয় প্যারামিটারটি এমন অক্ষরের একটি তালিকা যা ছাঁটা উচিত; সুতরাং একটি একক "w."যথেষ্ট হবে।
s($str)->replacePrefix('_bla')যেমন পাওয়া যায় আপনি তেমন সহায়ক হতে পারেন ।