নির্দিষ্ট অবস্থানে স্ট্রিং .োকান


269

এমন কোনও পিএইচপি ফাংশন রয়েছে যা তা করতে পারে?

আমি strposএকটি স্ট্রিংয়ের অবস্থান পেতে ব্যবহার করছি এবং আমি stringসেই অবস্থানের পরে একটি sertোকাতে চাই ।

উত্তর:


565
$newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);

http://php.net/substr_replace


24
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। বিল্ট-ইন ফাংশনগুলি যে কোনও দিন ব্যবহারকারীর তৈরি ফাংশনগুলির চেয়ে বেশি প্রাধান্য পায়।
বেনজাম

13
হ্যাঁ, চতুর্থ আর্গুমেন্ট "0" হওয়ায় মূল স্ট্রিংটির ওভাররাইটিং ছাড়াই প্রতিস্থাপনের স্ট্রিংটি সন্নিবেশ করায়।
বাটাল বাটকাস

7
উজ্জ্বল উত্তর। তবে অলস লোকের জন্য (আমার মতো) আপনার পোস্টে সম্ভবত একটি সংক্ষিপ্ত ব্যাখ্যা থাকতে হবে। আমি এখনই এটি করব এবং php.net থেকে অনুলিপি করব: "অবশ্যই, দৈর্ঘ্য যদি শূন্য হয় তবে এই ফাংশনটি প্রদত্ত শুরু অফসেটে স্ট্রিংয়ের প্রতিস্থাপন inোকানোর প্রভাব ফেলবে" "
ওল্ফসब्ल্লিভিটি

7
সাবধান: ফাংশন সাবস্ট্র_রেপ্লেস () মাল্টিবাইট নিরাপদ নয়! আপনার পোস্টগুলি কোনও UTF-8 অক্ষরের মাঝখানে হতে পারে। আপনার @ টিম-কুপারের সমাধানটি নিয়োগ করতে পারে তবে এমবি_সুবস্ট্র () ব্যবহার করতে পারেন।
সমৃদ্ধ বিমান 14


12

এটি চেষ্টা করুন, এটি যে কোনও সংখ্যক সাবস্ট্রিংয়ের জন্য কাজ করবে

<?php
    $string = 'bcadef abcdef';
    $substr = 'a';
    $attachment = '+++';

    //$position = strpos($string, 'a');

    $newstring = str_replace($substr, $substr.$attachment, $string);

    // bca+++def a+++bcdef
?>

7

পুতিনপ্লেস ফাংশনের চেয়ে স্ট্রিংইনসার্ট ফাংশনটি ব্যবহার করুন। আমি পরে ফাংশনটি একটি মাইএসকিএল ক্যোয়ারী পার্স করার জন্য ব্যবহার করছিলাম। আউটপুটটি ঠিক মতো দেখায়, ক্যোয়ারির ফলে একটি ত্রুটি হয়েছিল যা ট্র্যাক ডাউন করতে আমাকে কিছুটা সময় নিয়েছিল। নিম্নলিখিতটি কেবলমাত্র একটি প্যারামিটারের জন্য স্ট্রিংইন্টার ফাংশনের আমার সংস্করণ is

function stringInsert($str,$insertstr,$pos)
{
    $str = substr($str, 0, $pos) . $insertstr . substr($str, $pos);
    return $str;
}  

4
str_replace($sub_str, $insert_str.$sub_str, $org_str);

@ মিনিটেক অপ্ট বলেছে using strpos to get the position of a substring, তাই substringপ্রথমটি আসে। এবং তিনি বলেন নি কেবল একটি পদ সন্ধান করুন।
xdazz

3

এর জন্য আমার একটি পুরানো ফাংশন রয়েছে:

function putinplace($string=NULL, $put=NULL, $position=false)
{
    $d1=$d2=$i=false;
    $d=array(strlen($string), strlen($put));
    if($position > $d[0]) $position=$d[0];
    for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i];
    for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i];
    return $string;
}

// Explanation
$string='My dog dont love postman'; // string
$put="'"; // put ' on position
$position=10; // number of characters (position)
print_r( putinplace($string, $put, $position) ); //RESULT: My dog don't love postman

এটি একটি ছোট শক্তিশালী ফাংশন যা নির্বিঘ্নে তার কাজ সম্পাদন করে।


3

কীওয়ার্ডটি খুঁজে পাওয়ার পরে এটি আমার সহজ সমাধানটিও পরবর্তী লাইনে পাঠ্য সংযুক্ত করল।

$oldstring = "This is a test\n#FINDME#\nOther text and data.";

function insert ($string, $keyword, $body) {
   return substr_replace($string, PHP_EOL . $body, strpos($string, $keyword) + strlen($keyword), 0);
}

echo insert($oldstring, "#FINDME#", "Insert this awesome string below findme!!!");

আউটপুট:

This is a test
#FINDME#
Insert this awesome string below findme!!!
Other text and data.

3

কেবল কিছু যুক্ত করতে চেয়েছিলাম: টিম কুপারের উত্তরটি আমি খুব দরকারী খুঁজে পেয়েছি, আমি এটি এমন একটি পদ্ধতি তৈরিতে ব্যবহার করেছি যা অবস্থানগুলির অ্যারে গ্রহণ করে এবং সেগুলির উপরে সন্নিবেশ করায় তাই এখানে:

সম্পাদনা: মনে হচ্ছে আমার পুরানো ফাংশনটি ধরে নেওয়া হয়েছে$insertstrকেবল 1 টি চরিত্র এবং অ্যারে বাছাই করা হয়েছে। এটি নির্বিচারে চরিত্রের দৈর্ঘ্যের জন্য কাজ করে।

function stringInsert($str, $pos, $insertstr) {
    if (!is_array($pos)) {
        $pos = array($pos);
    } else {
        asort($pos);
    }
    $insertionLength = strlen($insertstr);
    $offset = 0;
    foreach ($pos as $p) {
        $str = substr($str, 0, $p + $offset) . $insertstr . substr($str, $p + $offset);
        $offset += $insertionLength;
    }
    return $str;
}

1
এটা কাজ করে না. আপনার অফসেটটি ধরে নিয়েছে $ ইন্টারস্টারটি কেবল 1 টি অক্ষর দীর্ঘ। সন্নিবেশকারী দৈর্ঘ্যের উপর নির্ভর করে আপনাকে অফসেট যুক্ত করতে হবে, 0 দিয়ে শুরু করতে হবে এবং সাবস্ট্রটারের পরে যুক্ত করতে হবে। তদ্ব্যতীত এটিকে কাজ করতে আপনার নীচের থেকে নীচের অবস্থানগুলিকে সাজানো উচিত। আমি এখানে আপনার ফাংশন সংশোধন করেছি, আপনি নিজের কোডটি সম্পাদনা করতে চাইতে পারেন: পেস্টবিন.com
ম্যাথিয়াস এস

@ মাথিয়াসস ধন্যবাদ, পরের বার শুধু সম্পাদনা বা সম্পাদনা করার পরামর্শ দিয়েছি, 2 বছর পরে আমি এই
টিলটি

1

সমাধানের সহজ এবং অন্য উপায়:

function stringInsert($str,$insertstr,$pos)
{
  $count_str=strlen($str);
  for($i=0;$i<$pos;$i++)
    {
    $new_str .= $str[$i];
    }

    $new_str .="$insertstr";

   for($i=$pos;$i<$count_str;$i++)
    {
    $new_str .= $str[$i];
    }

  return $new_str;

}  

সম্ভবত এই ফাংশনটি কীভাবে ব্যবহৃত হয় তাও বলবেন?
রটিমি

1
function insSubstr($str, $sub, $posStart, $posEnd){
  return mb_substr($str, 0, $posStart) . $sub . mb_substr($str, $posEnd + 1);
}

$posEndঅপরিবর্তিত প্রশ্নটি নির্দিষ্ট অবস্থানের পরে সাবস্ট্রিং aboutোকানো সম্পর্কে ছিল।
Styx

হ্যাঁ, তবে আমি এই প্রকল্পটি আমার প্রকল্পের জন্য করেছি। যেখানে আমার জায়গা প্রতিস্থাপন এবং অন্য জায়গায় সন্নিবেশ করা প্রয়োজন। আমার ফাংশনও এই প্রশ্নের জন্য কাজ করছে, তাই আমি বুঝতে পারি না আপনি আমাকে কেন বিয়োগ করলেন?
ইভান ইভান

0

অদ্ভুত উত্তর এখানে! আপনি স্প্রিন্টফ [ডকুমেন্টেশনের লিঙ্ক] দিয়ে সহজেই অন্য স্ট্রিংগুলিতে স্ট্রিংগুলি into োকাতে পারেন । ফাংশনটি অত্যন্ত শক্তিশালী এবং একাধিক উপাদান এবং অন্যান্য ডেটা প্রকারগুলিও পরিচালনা করতে পারে।

$color = 'green';
sprintf('I like %s apples.', $color);

আপনি স্ট্রিং দেয়

I like green apples.

1
ওটা সুন্দর. তবে এটি কোনও প্রোগ্রাম্যাটিক পদ্ধতি গ্রহণ করে না। আমরা সাধারণত 'I like apples.'একটি পরিবর্তনশীল হিসাবে আছে । সুতরাং আমাদের %sপ্রথমে স্ট্রিংটি সন্নিবেশ করতে হবে , যা মূল সমস্যাটিতে ফিরে আসে
কেইটেলডোগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.