পিএইচপিতে স্ট্রিংয়ের প্রথম চরিত্রটি কীভাবে সরিয়ে ফেলবেন?


255

উত্তর:


330

:স্ট্রিংয়ের শুরু থেকে প্রতিটি সরাতে , আপনি ltrim ব্যবহার করতে পারেন :

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'

109
দ্রষ্টব্য যে lrtim সমস্ত মুছে ফেলবে :::::। কখনও কখনও এটি পছন্দসই আচরণ হয় না।
সিআর

5
মনে রাখবেন এটি কেবলমাত্র একক অক্ষরের জন্যই। ltrim প্রদত্ত স্ট্রিংয়ের সমস্ত চরিত্র ছাঁটাই করবে: ltrim('prefixprefix_postfix', 'prefix')ফলাফল'_postfix';
কোডি জাঙ্গো

555

substr()ফাংশন সম্ভবত আপনি এখানে সহায়তা করবে:

 $str = substr($str, 1);

স্ট্রিংগুলি 0 থেকে শুরু করে সূচিযুক্ত হয় এবং এই ফাংশনগুলির দ্বিতীয় প্যারামিটারটি কাটস্টার্ট নেয়। সুতরাং এটি 1 করুন, এবং প্রথম চরটি চলে গেছে।


35
ইউনিকোড সম্পর্কে সচেতন হন। যদি আপনি একটি নির্বিচারে স্ট্রিং (যেমন "<l <- eel জন্য ডেনিশ") নিয়ে কাজ করছেন, আপনার mb_substr ব্যবহার করা উচিত এবং এনকোডিং নির্দিষ্ট করা উচিত।
টমাস জেনসেন

এটি সঠিক বাস্তবায়ন নয়, এটি "এক" অক্ষরের সাথে কাজ করছে না। আপনি যদি একক অক্ষরের স্ট্রিং চেষ্টা করে থাকেন তবে সাবস্ট্রেট একটি বুলিয়ান মানটি
ফিরিয়ে দিন

2
@ এ্যানরু ম্যানুয়ালটিতে স্ট্রিংয়ের দৈর্ঘ্য প্রারম্ভিক প্যারামিটারের সমান হলে একটি খালি স্ট্রিং ফিরে আসবে states সংস্করণ 7 এর পূর্বে, falseফিরে এসেছিল। সুতরাং আপনার যদি চেক করা দরকার যে তারা যদি আপনার মতো আচরণ না করে তবে তারা সমান কিনা।
rybo111

95

সাবস্ট্রাস্ট ব্যবহার করুন :

$str = substr($str, 1); // this is a applepie :)

দুর্দান্ত উত্তর! ভাগ করে নেওয়ার জন্য ধন্যবাদ! যদিও আপেলপি সম্পর্কে আপনার কোডের মন্তব্যটি আমি বুঝতে পেরেছি তা নিশ্চিত নয়। ও
হোল্ডঅফহাঙ্গার

64

3 উত্তরের জন্য কার্যকর সময়:

কেস প্রতিস্থাপন করে প্রথম চিঠিটি সরান

$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo

1.000.000 পরীক্ষার জন্য নির্বাহের সময়: 0.39602184295654সেকেন্ড


সাবস্ট্রটার () সহ প্রথম অক্ষরটি সরান

$str = "hello";
$str = substr($str, 1);

1.000.000 পরীক্ষার জন্য নির্বাহের সময়: 5.153294801712সেকেন্ড


Ltrim () সহ প্রথম অক্ষরটি সরান

$str = "hello";
$str= ltrim ($str,'h');

1.000.000 পরীক্ষার জন্য নির্বাহের সময়: 5.2393000125885সেকেন্ড


প্রাক অক্ষর () সহ প্রথম অক্ষরটি সরান

$str = "hello";
$str = preg_replace('/^./', '', $str);

1.000.000 পরীক্ষার জন্য নির্বাহের সময়: 6.8543920516968সেকেন্ড


ধন্যবাদ। যদিও আমার আপডেট দেখুন। এসকিউএল কোয়েরিতে আপডেট করা স্ট্রিংটি ব্যবহার করার সময় এটি আমার জন্য সমস্যা তৈরি করেছিল।
rybo111

6
আমি কেবল $str[0] = '';সমাধানটি চেষ্টা করেছি এবং এটি কার্যকর হয়নি । ভাল তবে এটি যদি আপনি তারপরে উদাহরণস্বরূপ তুলনামূলকভাবে ব্যবহার করার পরিকল্পনা করেন >বা <এটি কাজ করে না। এটি এখনও `` হিসাবে + $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
ইয়ান

@ ইয়ান: কোনও কীওয়ার্ড ব্যবহার করে কোনও এপিআই থেকে রেকর্ড আনার সময় আমি একই সমস্যাটি দেখতে পেয়েছি, var_dump($keyword)যা চেষ্টা করেছি যা পূর্ববর্তী চরিত্রের দৈর্ঘ্যটি দেখিয়েছিল .. তারপরে আমি কীওয়ার্ডটি ছাঁটাই করার চেষ্টা করেছি এবং পরে এটি ভাল কাজ করেছে var_dump(trim($keyword)).. আশা করি এটি কারও সাহায্য করবে .. :)
সৈয়দ ক্বারিব

3
এটা কাজ করে না. "সরানো" অবস্থানটি নাল বাইট দ্বারা প্রতিস্থাপন করা হয়েছে, সুতরাং আপনি "হ্যালো" এর পরিবর্তে "\ 0hello" পান।
জোসেফ কুফনার

1
আমি "সতর্কতা পেয়েছি: স্ট্রিং অফসেটে ফাঁকা স্ট্রিং বরাদ্দ করতে পারি না" $ str [0] = "" এর জন্য;
ফ্রান্সিসকো লুজ


11

পিএইচপিতে স্ট্রিংয়ের প্রথম অক্ষরটি সরাতে,

$string = "abcdef";     
$new_string = substr($string, 1);

echo $new_string;
Generates: "bcdef"


9

হালনাগাদ

আরও পরীক্ষার পরে, আমি আর এটি ব্যবহার করার পরামর্শ দিচ্ছি না। কোনও মাইএসকিউএল কোয়েরিতে আপডেট করা স্ট্রিংটি ব্যবহার করার সময় এবং substrসমস্যাটি স্থির করে দেওয়ার ক্ষেত্রে এটি আমার জন্য সমস্যা তৈরি করেছিল। আমি এই উত্তরটি মুছে ফেলার বিষয়ে ভেবেছিলাম, তবে মন্তব্যগুলি প্রস্তাব দেয় এটি দ্রুততর হয় যাতে কারও কাছে এটির ব্যবহার থাকতে পারে। আপনি আপডেট করা স্ট্রিংটি ছাঁটাইটি স্ট্রিং দৈর্ঘ্যের সমস্যার সমাধান করতে পারে।


কখনও কখনও আপনার কোনও ফাংশন প্রয়োজন হয় না:

$str[0] = '';

উদাহরণ স্বরূপ:

$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'

এই পদ্ধতিটি অন্যটি তৈরি করার পরিবর্তে বিদ্যমান স্ট্রিংটি সংশোধন করে।


এটি খুব দ্রুত বলে মনে হচ্ছে।
ইমানুয়েল রুসেভ

@ এমানুয়েলরুসেভ কীভাবে? আপনি যদি আগ্রহী হন তবে টাইপ করা দ্রুত বা এটি দ্রুত চলে Just
rybo111

মানে এটি আরও দ্রুত চলে।
ইমানুয়েল রুসেভ

@ ইমানুয়েলরুসেভ আমি আগ্রহী যে আপনি যদি কিছু পরিসংখ্যান সরবরাহ করতে পারেন যেহেতু আমি উত্তরটি যুক্ত করব।
rybo111

1
এই সাথে সতর্ক হতে হবে। নীচের কোডটি আউটপুটগুলি বুল (মিথ্যা)। oo foo = 'বই'; $ বার = 'বই'; $ বার = সাবস্ট্রিট ($ বার, 1); ; foo [0] = ''; var_dump ($ foo === $ বার);
চিন্তিত্বে

8

গৃহীত উত্তর:

$str = ltrim($str, ':');

কাজ করে তবে :শুরুতে একাধিক থাকাকালীন একাধিক সরিয়ে ফেলবে ।

$str = substr($str, 1);

শুরু থেকে যে কোনও চরিত্র সরিয়ে ফেলবে।

যাহোক,

if ($str[0] === ':')
    $str = substr($str, 1);

পুরোপুরি কাজ করে।



2

স্ট্রিং + হোয়াইটস্পেসের শুরু এবং শেষ থেকে আরেতে প্রতিটি শব্দের উপস্থিতি ছাঁটা হয় এবং স্বাভাবিক ট্রিম অনুযায়ী ()) বিকল্প হিসাবে অতিরিক্ত একক অক্ষর

<?php
function trim_words($what, $words, $char_list = '') {
    if(!is_array($words)) return false;
    $char_list .= " \t\n\r\0\x0B"; // default trim chars
    $pattern = "(".implode("|", array_map('preg_quote', $words)).")\b";
    $str = trim(preg_replace('~'.$pattern.'$~i', '', preg_replace('~^'.$pattern.'~i', '', trim($what, $char_list))), $char_list);
    return $str;
}

// for example:
$trim_list = array('AND', 'OR');

$what = ' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list)); // => "x = 1 AND b = 2"

$what = ' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list, ',')); // => "ORDER BY x DESC, b ASC"
?>

1

কোডটি আমার পক্ষে ভাল কাজ করে।

$str = substr($str ,-(strlen($str)-1));

হতে পারে, উত্তর সঙ্গে খুব অবদান।


1
এটি একটি একক চরিত্রের স্ট্রিংয়ের সাথে কাজ করছে না: যেমন "এ"
অারু

আপনি ঠিক =) সুতরাং বিশ্বাস করুন যে সম্ভাব্য সমাধানটি কেবলমাত্র একটি অক্ষর অন্তর্ভুক্ত হওয়ার আগে পরীক্ষা করা। উদাহরণস্বরূপ: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; বা $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; কারণ ধারণাটি হ'ল শেষ চরিত্রটি সরিয়ে ফেলা, যদি আপনার কেবল একটি থাকে ...: পি
ক্লাউডিয়োনার অলিভিয়র

1

mb_substr ফাংশন ব্যবহার করুন

    mb_substr("我abc", 1);

চরিত্রটি যদি মুদ্রার প্রতীক হয় তবে দরকারী।
রায়মি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.