কিভাবে একটি স্ট্রিং অংশ অপসারণ? [বন্ধ]


152

আমি কীভাবে কোনও স্ট্রিংয়ের অংশ সরিয়ে ফেলতে পারি?

উদাহরণ স্ট্রিং: "REGISTER 11223344 here"

"11223344"উপরের উদাহরণটি থেকে আমি কীভাবে সরিয়ে ফেলতে পারি ?


আপনার প্রশ্নটি অস্পষ্ট / অস্পষ্ট। আপনি শব্দটি ব্যবহার করছেন remove, তবে সম্ভবত মনে হচ্ছে আপনার অর্থ extractহ'ল লক্ষ্যযুক্ত স্ট্রিংটি ডাটাবেসে সঞ্চয় করা যায়।
মিকম্যাকুসা

@ ম্যাকয়েন আমি বেশ আত্মবিশ্বাসী বোধ করি যে আপনি অনেক উত্তর উত্তর সঠিক করার জন্য প্রশ্নটি ভাংচুর করেছেন। এটি সম্পর্কে চিন্তা করুন: কেন ওপি REGISTER hereডাটাবেসে সংরক্ষণ করতে চাইবে ?
মিকম্যাকুসা

2
@ মিকম্যাকুসা অপসারণ টেক অফ এর সমার্থক হতে পারে, অর্থাৎ 11223344 কে স্ট্রিংয়ের বাইরে নিয়ে যাওয়া, আমি এখানে সমস্যাটি দেখতে ব্যর্থ হই। সবচেয়ে খারাপ এটি অস্পষ্ট, এটি অবশ্যই "ভাঙচুর" নয়
নিক

প্রাক-ভাঙা সংস্করণ (গুলি) পড়ুন। @Nick stackoverflow.com/posts/2192170/revisions সত্য আপনার মন পরিবর্তন করতে হবে। এই প্রশ্নটি অস্পষ্ট হিসাবে বন্ধ হয়ে দেখে আমি খুশি হব।
মিকম্যাকুসা

2
@ মিকম্যাকুসা আমি করেছি ... আমি আপনার বক্তব্যটি দেখতে ব্যর্থ হয়েছি। এটি লিখিতভাবে যেমন আপনার যদি এত বড় সমস্যা হয় তবে কেন এটি নিজেকে স্থির করবেন না
নিক

উত্তর:


220

আপনি যদি "11223344" নির্দিষ্টভাবে লক্ষ্য করে থাকেন তবে ব্যবহার করুন str_replace:

// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");

4
আরআর_প্লেস ($ অনুসন্ধান, $ প্রতিস্থাপন, $ বিষয়)
drooh

119

আপনি str_replace () ব্যবহার করতে পারেন , যা এটি হিসাবে সংজ্ঞায়িত:

str_replace($search, $replace, $subject)

সুতরাং আপনি কোডটি লিখতে পারেন:

$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;

নিয়মিত এক্সপ্রেশনগুলির মাধ্যমে আপনার যদি আরও ভাল মিলের প্রয়োজন হয় তবে আপনি preg_replace () ব্যবহার করতে পারেন ।


2
যদি কারও সাথে রিজেক্স ম্যাচিংয়ের প্রয়োজন হয় তবে প্রিগ_রেপস () us2.php.net/manual/en/function.preg-replace.php
লিন

4
এই উত্তরটি কেন পোস্ট করা হয়েছিল তা নিশ্চিত নয়, এটি ডমিনিকের উত্তরের
দীর্ঘতর

23

অনুমান 11223344 ধ্রুবক নয়

$string="REGISTER 11223344 here";
$s = explode(" ",$string);
unset($s[1]);
$s = implode(" ",$s);
print "$s\n";

10
str_replace(find, replace, string, count)
  • প্রয়োজনীয় খুঁজে । সন্ধান করার জন্য মান নির্দিষ্ট করে
  • প্রয়োজনীয় প্রতিস্থাপনঅনুসন্ধানে মানটি প্রতিস্থাপন করতে মান নির্দিষ্ট করে
  • স্ট্রিং প্রয়োজনীয়। স্ট্রিংটি অনুসন্ধান করার জন্য নির্দিষ্ট করে
  • count চ্ছিক গণনা করুন । একটি পরিবর্তনশীল যা প্রতিস্থাপনের সংখ্যা গণনা করে

ওপি উদাহরণ অনুসারে:

$Example_string = "REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344', '', $Example_string);

// will leave you with "REGISTER  here"

// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace('  ', ' ', $Example_string_PART_REMOVED));
// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces

// will leave you with "REGISTER here"

1
আপনি কীভাবে প্রস্তাব দিচ্ছেন যে ওপি এই ছদ্ম কোডটি ব্যবহার করবে?
মিকম্যাকুসা

6

আপনার যখন নিয়মের উপর ভিত্তি করে ম্যাচিং দরকার তখন আপনার রেজিেক্স ব্যবহার করা উচিত

$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];

এটি সংখ্যার প্রথম সেটটির সাথে মিলবে, সুতরাং আপনার আরও সুনির্দিষ্ট হওয়ার দরকার হলে:

$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];

প্রিগ_রেপ্লেস () কি এত সহজ হবে না? us2.php.net/manual/en/function.preg-replace.php
এলিজা লিন

1
@ এলিজাহলিন প্রতিস্থাপনের জন্য আপনাকে জিনিসগুলি সরিয়ে ফেলা দরকার, ভবিষ্যতের পরিবর্তন বা শব্দটি ভেঙে যাবে। _ স্থানের মাধ্যমে এটি করা কিন্তু _ ম্যাচটি কাজ চালিয়ে যাবে।
ট্র্যাভিসো

@ ট্র্যাভিসো ভাল হ্যাঁ, তবে না। ঐ দুটি প্রায় একই ফাংশন বাস্তবায়ন জ্ঞানী হয়, এবং সম্ভাবনা যে ভবিষ্যত পরিবর্তন প্রভাবিত তাদের কাউকে একই । কেবলমাত্র _ ম্যাচের ক্ষেত্রে ভবিষ্যতের পরিবর্তনের একই সম্ভাবনা রয়েছে, এটি ব্যবহারকে অবৈধ করে তোলে এবং স্থানটি এখনও ঠিক কাজ করে। এছাড়াও, সংস্করণটি সাধারণত যদি সম্ভব হয় তবে পূর্ববর্তী কার্যকারিতাটি ব্রেক না করার জন্য অত্যন্ত যত্নশীল।
সিটি

আপনার এখানে ক্যাপচার গ্রুপের দরকার নেই। আসলে ক্যাপচার গ্রুপটি ব্যবহার করে অহেতুকভাবে $matchঅ্যারে ব্লাট হয় । বন্ধনীগুলি সরান তারপরে অ্যাক্সেস করুন $match[0]
মিকম্যাকুসা

5

সাবস্ট্রাস্ট () একটি অন্তর্নির্মিত পিএইচপি ফাংশন যা একটি স্ট্রিংয়ের অংশ দেয়। ফাংশন সাবস্ট্রাস্ট () ইনপুট হিসাবে একটি স্ট্রিং নেবে, সূচি ফর্ম যেখানে আপনি স্ট্রিংটি ছাঁটাতে চান। এবং একটি alচ্ছিক পরামিতি হ'ল সাবস্ট্রিংয়ের দৈর্ঘ্য। আপনি যথাযথ ডকুমেন্টেশন এবং উদাহরণ কোড দেখতে পারেন http://php.net/manual/en/function.substr.php

দ্রষ্টব্য: একটি স্ট্রিংয়ের সূচক 0 দিয়ে শুরু হয়।


আপনি কীভাবে প্রস্তাব দিতে পারেন যে পছন্দসই ফলাফলটি অর্জন করতে ওপিকে আপনার সাধারণ ইঙ্গিতটি ব্যবহার করা উচিত?
মিকম্যাকুসা

আমি এই উত্তরটি অস্পষ্ট এবং স্বল্পমূল্যের বলে মনে করি।
মিকম্যাকুসা

1

গতিশীলভাবে, আপনি যদি কোনও স্ট্রিংয়ের (ক) ফিক্সড ইনডেক্স (এস) থেকে (ক) অংশ (গুলি) অপসারণ করতে চান তবে এই ফাংশনটি ব্যবহার করুন:

/**
 * Removes index/indexes from a string, using a delimiter.
 * 
 * @param string $string
 * @param int|int[] $index An index, or a list of indexes to be removed from string.
 * @param string $delimiter 
 * @return string
 * @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
 * types before each argument) and the return type.
 */
function removeFromString(string $string, $index, string $delimiter = " "): string
{
    $stringParts = explode($delimiter, $string);

    // Remove indexes from string parts
    if (is_array($index)) {
        foreach ($index as $i) {
            unset($stringParts[(int)($i)]);
        }
    } else {
        unset($stringParts[(int)($index)]);
    }

    // Join all parts together and return it
    return implode($delimiter, $stringParts);
}

আপনার উদ্দেশ্যে:

remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here

এর ব্যবহারগুলির মধ্যে একটি হ'ল কমান্ডের মতো স্ট্রিংগুলি সম্পাদন করা, যা আপনি তাদের কাঠামো জানেন।


1
ঘোস্টডগ ইতিমধ্যে একটি বিস্ফোরণ-ইমপ্লোড কৌশলটি প্রস্তাব করেছিল, তবে আমি এই জাতীয় প্রাথমিক ক্রিয়াকলাপের জন্য দীর্ঘায়িত কৌশলটি বিনোদনের কল্পনা করতে পারি না।
মিকম্যাকুসা

0

নিম্নলিখিত স্নিপেট "এখানে নিবন্ধক" মুদ্রণ করবে

$string = "REGISTER 11223344 here";

$result = preg_replace(
   array('/(\d+)/'),
   array(''),
   $string
);

print_r($result);

নীচে দেওয়া হিসাবে preg_replace () API আমাদের ব্যবহার করে।

$result = preg_replace(
    array('/pattern1/', '/pattern2/'),
    array('replace1', 'replace2'),
    $input_string
);

এক্ষেত্রে অ্যারে পাস করার কোনও কারণ নেই preg_replace()। বা ক্যাপচার গ্রুপ ব্যবহার করে কোনও লাভ নেই।
মিকম্যাকুসা

আমি রাজী. অ্যারে কেবল সুবিধার জন্য যুক্ত করা হয়। এটিকে অবহেলা করা যায়। এটা কোন ক্ষতি করবে না। সংখ্যা বাদ দেওয়ার জন্য ক্যাপচার গ্রুপ যুক্ত করা হয়েছে। এটি পরিকল্পনার প্রশ্ন অনুযায়ী কাজ করছে। এবং আরও পরিবর্তন এবং সূক্ষ্ম সুরকরণ ব্যক্তি উপর ভিত্তি করে করা যেতে পারে।
আরঙ্গো_86৮

আমার বক্তব্যটি হ'ল, আপনার স্নিপেটে অপ্রয়োজনীয় অন্তর্ভুক্তি রয়েছে যা অন্তর্ভুক্ত করার কোনও মানে রাখে না।
মিকম্যাকুসা

-1

নিম্নলিখিত করুন

$string = 'REGISTER 11223344 here';

$content = preg_replace('/REGISTER(.*)here/','',$string);

এটি "নিবন্ধন" এখানে ফিরে আসবে

অথবা

$string = 'REGISTER 11223344 here';

$content = preg_replace('/REGISTER (.*) here/','',$string);

এটি "নিবন্ধক এখানে" ফিরে আসবে


4
এটি কি "রেজিস্টার__ এখানে" দুটি ফাঁকা দিয়ে ফিরে আসবে না (স্পেস হিসাবে আন্ডারস্কোর হিসাবে ভাবুন, মন্তব্যটি আমাকে পরবর্তী দুটি স্থানের অনুমতি দেবে না)? "(। *)" এর আগে এবং পরে স্পেসগুলি এর বিকাশ।
টেকনিকুইস্ট

6
এই উত্তরটি কমপক্ষে 100% ভুল। প্রুফ: 3v4l.org/LDLEM কেন এই উত্তরটির 15 টি ইউভি আছে?
মিকম্যাকুসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.