একাধিক আইটেমের জন্য Str_replace


115

আমার আগে এটি করার কথা মনে আছে তবে কোডটি খুঁজে পাচ্ছি না। আমি এর মতো একটি চরিত্র প্রতিস্থাপন করতে str_replaces ব্যবহার করি: str_replace(':', ' ', $string);তবে আমি \/:*?"<>|প্রত্যেকটির জন্য একটি str_replace না করে নিম্নলিখিত সমস্ত অক্ষর প্রতিস্থাপন করতে চাই ।


2
আপনি এই সমস্ত অক্ষর একটি স্থান দিয়ে প্রতিস্থাপন করতে চান?
জিউস বই

7
আপনি যা চান তা সম্ভব কিনা তা দেখতে সেরা পিএইচপিএন ম্যানুয়ালটি উল্লেখ করতে এবং প্যারাম বিভাগগুলি পর্যালোচনা করতে ভয় পাবেন না ।
মাইক বি

উত্তর:


117

str_replace() একটি অ্যারে নিতে পারে, যাতে আপনি এটি করতে পারেন:

$new_str = str_replace(str_split('\\/:*?"<>|'), ' ', $string);

বিকল্পভাবে আপনি ব্যবহার করতে পারেন preg_replace():

$new_str = preg_replace('~[\\\\/:*?"<>|]~', ' ', $string);

2
ওপিকে ধরে নেওয়ার অর্থ হ'ল ব্যাকস্ল্যাশ প্রতিস্থাপন করা উচিত, সেই পূর্ববর্তী স্থানটি আমার পক্ষে কাজ করে না। ব্যাকস্ল্যাশটি প্রত্যাশার মতো কাজ করতে, আমাকে সেগুলির মধ্যে 4 টি (যেমন "" \\\\ ") প্যাটার্নে ব্যবহার করতে হয়েছিল।
গ্রিনম্যাট

1
ভাল উত্তর, @ ডগবার্ট উত্তর যুক্ত করে এটি ম্যানুয়ালটি পড়ে না এমন স্ট্রিং_স্প্লিট বুঝতে না পারে এমন ব্যক্তির পক্ষে এটি সম্পূর্ণ হয়ে যাবে।
ব্র্যাডমেজ

ওপির ক্ষেত্রে str_replace()ওভারের preg_replace()(বা তদ্বিপরীত) সুবিধা কী ?
লুট্টিদেভ

1
@ অন্তর্দিতদেব কোনওভাবেই আসল সুবিধা নয়, এটি কেবল পছন্দের বিষয়
নাল ইউজারএক্সসেপশন

1
@ মাধুরভাইয়া রেজিেক্সটি পরিবর্তন করুন '~[\\+><-]~'(কোথায় আছেন তা নোট করুন -)। ড্যাশ ( -) হ'ল একটি রেজেক্স মেটাচার্যাক্টর, তাই এর থেকে পালাতে বা কৌশলগতভাবে অক্ষর শ্রেণিতে স্থাপন করা প্রয়োজন (সমস্ত কিছু [])। : এই উত্তর দেখার stackoverflow.com/a/7604888/396458
NullUserException

179

এটার মত:

str_replace(array(':', '\\', '/', '*'), ' ', $string);

বা, আধুনিক পিএইচপি (5.4 এর পরে কিছু), সামান্য কম শব্দযুক্ত:

str_replace([':', '\\', '/', '*'], ' ', $string);

72

উদাহরণস্বরূপ , আপনি যদি সার্চ 1 প্রতিস্থাপন 1 এবং অনুসন্ধান 2 এর সাথে প্রতিস্থাপন 2 করতে চান তবে নীচের কোডটি কাজ করবে:

print str_replace(
    array("search1","search2"),
    array("replace1", "replace2"),
    "search1 search2"
);

// আউটপুট: 1




2

আপনি preg_replace () ব্যবহার করতে পারেন । নিম্নলিখিত উদাহরণটি পিএইচপি কমান্ড লাইন ব্যবহার করে চালানো যেতে পারে:

<?php
$s1 = "the string \\/:*?\"<>|";
$s2 = preg_replace("^[\\\\/:\*\?\"<>\|]^", " ", $s1) ;
echo "\n\$s2: \"" . $s2 . "\"\n";
?>

আউটপুট:

$ s2: "স্ট্রিং"


চরিত্র শ্রেণীর ভিতরে অনেক বেশি পালানো। (গৃহীত উত্তর দেখুন)
মিকম্যাকুসা

0

আমার এমন পরিস্থিতি হয়েছিল যার মাধ্যমে আমাকে দুটি ভিন্ন প্রতিস্থাপনের ফলাফলের সাথে এইচটিএমএল ট্যাগগুলি প্রতিস্থাপন করতে হয়েছিল।

$trades = "<li>Sprinkler and Fire      Protection Installer</li>
<li>Steamfitter </li>
<li>Terrazzo, Tile and Marble      Setter</li>";

$s1 =  str_replace('<li>', '"', $trades);

$s2 = str_replace('</li>', '",', $s1);

echo $s2;

ফলাফল

"স্প্রিংকলার এবং ফায়ার প্রোটেকশন ইনস্টলার", "স্টিমফিটার", "টেরাজো, টাইল এবং মার্বেল সেটার",


0

আমার ধারণা আপনি এটির যত্ন নিচ্ছেন:

// example
private const TEMPLATE = __DIR__.'/Resources/{type}_{language}.json';

...

public function templateFor(string $type, string $language): string
{
   return \str_replace(['{type}', '{language}'], [$type, $language], self::TEMPLATE);
}

0

আমার ব্যবহারের ক্ষেত্রে, আমি এইচটিএমএল ডকুমেন্টে কিছু ক্ষেত্রকে প্যারামিটারাইজ করেছি এবং একবার এই ক্ষেত্রগুলি লোড করার সাথে সাথে আমি str_replace পদ্ধতিটি ব্যবহার করে সেগুলি প্রতিস্থাপন এবং প্রতিস্থাপন করেছি।

<?php echo str_replace(array("{{client_name}}", "{{client_testing}}"), array('client_company_name', 'test'), 'html_document'); ?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.