दिलचस्प पोस्ट
Printf में डबल के लिए सही प्रारूप विनिर्देशक एक निर्देशिका में सभी फ़ाइलों पर कमांड निष्पादित करने के लिए Bash स्क्रिप्ट एंड्रॉइड 4.2 ने मेरे एन्क्रिप्ट / डिक्रिप्ट कोड को तोड़ दिया और प्रदान किए गए समाधान काम नहीं करते Linux में एक स्थिर लाइब्रेरी कैसे संकलित करें? क्यों सी # संकलक emit Activator.CreativeInstance एक नई () बाधा के साथ एक सामान्य प्रकार के साथ नए फोन कर जब? jQuery: मौजूदा <ul> में <li> कैसे जोड़ें? दस्तावेज़ आधारित डेटाबेस बनाम संबंधपरक डेटाबेस के पेशेवरों / विचार htmlentities () बनाम htmlspecialchars () मैं विंडोज पर curl कैसे स्थापित करूं? jQuery खींचने योग्य और अतिप्रवाह समस्या प्रसारण रिसीवर को कैमरा ईवेंट प्राप्त नहीं होगा मैं जावास्क्रिप्ट में टेबल पंक्तियों और सेल के माध्यम से कैसे पुनरावृत्त करूं? उदाहरण के बारे में "व्यवहार में जावा संगतता" के बारे में सवाल कैसे दो निर्दिष्ट तारीख के बीच की तारीखों को खोजने के लिए? माउस-ओवर पर सीएसएस और फिर रंग के साथ ग्रेस्केल की छवि?

Str_replace का उपयोग करना ताकि यह केवल पहले मैच पर ही काम करे?

मुझे str_replace() का एक संस्करण चाहिए जो केवल $subject में $search की पहली $search की जगह लेता है क्या इसका एक आसान समाधान है, या मुझे एक हैमी समाधान की आवश्यकता है?

वेब के समाधान से एकत्रित समाधान "Str_replace का उपयोग करना ताकि यह केवल पहले मैच पर ही काम करे?"

Preg_replace के साथ किया जा सकता है:

 function str_replace_first($from, $to, $subject) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $subject, 1); } echo str_replace_first('abc', '123', 'abcdef abcdef abcdef'); // outputs '123def abcdef abcdef' 

जादू वैकल्पिक चौथे पैरामीटर [सीमा] में है प्रलेखन से:

[सीमा] – प्रत्येक विषय स्ट्रिंग में प्रत्येक पैटर्न के लिए अधिकतम संभव प्रतिस्थापन। -1 के लिए डिफ़ॉल्ट (कोई सीमा नहीं)

हालांकि, ज़ोंबैट का जवाब अधिक कुशल तरीके से देखें (मोटे तौर पर, 3-4x तेज)।

इसका कोई संस्करण नहीं है, लेकिन इसका समाधान बिल्कुल भी हैक नहीं है।

 $pos = strpos($haystack, $needle); if ($pos !== false) { $newstring = substr_replace($haystack, $replace, $pos, strlen($needle)); } 

बहुत आसान है, और नियमित अभिव्यक्ति का प्रदर्शन जुर्माना बचाता है।

बोनस: यदि आप आखिरी घटना को बदलना चाहते हैं, तो बस strrpos के स्थान पर strrpos का उपयोग करें

संपादित करें: दोनों उत्तर अपडेट किए गए हैं और अब सही हैं। फ़ंक्शन के समय अभी भी उपयोगी होने के बाद से मैं जवाब छोड़ दूँगा

'ज़ोंबैट' और 'बहुत ज्यादा पीएचपी' के उत्तर दुर्भाग्य से सही नहीं हैं। यह उत्तर जम्बेट के लिए एक संशोधन है (जैसा कि मुझे कोई टिप्पणी पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है):

 $pos = strpos($haystack,$needle); if ($pos !== false) { $newstring = substr_replace($haystack,$replace,$pos,strlen($needle)); } 

Strlen ($ सुई) के बजाय, strlen ($ प्रतिस्थापित) पर ध्यान दें ज़ाट का उदाहरण केवल सही ढंग से काम करेगा यदि सुई और प्रतिस्थापित करना एक ही लंबाई है।

PHP के स्वयं के str_replace के रूप में एक ही हस्ताक्षर के साथ फ़ंक्शन में समान कार्यक्षमता है:

 function str_replace_first($search, $replace, $subject) { $pos = strpos($subject, $search); if ($pos !== false) { return substr_replace($subject, $replace, $pos, strlen($search)); } return $subject; } 

यह 'बहुत ज्यादा PHP' का संशोधित जवाब है:

 implode($replace, explode($search, $subject, 2)); 

1 के बजाय अंत में 2 नोट करें। या फ़ंक्शन स्वरूप में:

 function str_replace_first($search, $replace, $subject) { return implode($replace, explode($search, $subject, 2)); } 

मैंने दो फ़ंक्शंस का समय दिया और कोई भी मैच नहीं मिला जब पहले एक बार दोगुना दोगुना हो। जब एक मैच पाया जाता है तो वे उसी गति से होते हैं

मुझे आश्चर्य था कि कौन सबसे तेज़ था, इसलिए मैंने उन सभी को परीक्षा दी।

नीचे आपको मिलेगा:

  • इस पृष्ठ पर योगदान किए गए सभी कार्यों की एक विस्तृत सूची
  • प्रत्येक contrubution के लिए बेंचमार्क परीक्षण (10,000 से अधिक औसत निष्पादन समय)
  • प्रत्येक उत्तर के लिए लिंक (पूर्ण कोड के लिए)

सभी कार्यों को उसी सेटिंग्स के साथ परीक्षण किया गया था:

 $string = 'OOO.OOO.OOO.S'; $search = 'OOO'; $replace = 'B'; 

कार्य केवल स्ट्रिंग के भीतर स्ट्रिंग की पहली घटना को बदलते हैं:

  • substr_replace($string, $replace, 0, strlen($search));

     [CONTRIBUTED BY] => zombat [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000062883 [SLOWER BY] => FASTEST 
  • replace_first($search, $replace, $string);

     [CONTRIBUTED BY] => too much php [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000073902 [SLOWER BY] => 17.52% 
  • preg_replace($search, $replace, $string, 1);

     [CONTRIBUTED BY] => karim79 [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000077519 [SLOWER BY] => 23.27% 
  • str_replace_once($search, $replace, $string);

     [CONTRIBUTED BY] => happyhardik [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000082286 [SLOWER BY] => 30.86% 
  • str_replace_limit($search, $replace, $string, $count, 1);

     [CONTRIBUTED BY] => bfrohs - expanded renocor [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000083342 [SLOWER BY] => 32.54% 
  • str_replace_limit($search, $replace, $string, 1);

     [CONTRIBUTED BY] => renocor [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000093116 [SLOWER BY] => 48.08% 
  • str_replace_limit($string, $search, $replace, 1, 0);

     [CONTRIBUTED BY] => jayoaK [OOO.OOO.OOO.S] => B.OOO.OOO.S [AVERAGE TIME] => 0.0000093862 [SLOWER BY] => 49.26% 

फ़ंक्शंस जो स्ट्रिंग के भीतर केवल स्ट्रिंग की अंतिम घटना को बदलते हैं:

  • substr_replace($string, $replace, strrpos($string, $search), strlen($search));

     [CONTRIBUTED BY] => oLinkSoftware - modified zombat [OOO.OOO.OOO.S] => OOO.OOO.BS [AVERAGE TIME] => 0.0000068083 [SLOWER BY] => FASTEST 
  • strrev(implode(strrev($replace), explode(strrev($search), strrev($string), 2)));

     [CONTRIBUTED BY] => oLinkSoftware [OOO.OOO.OOO.S] => OOO.OOO.BS [AVERAGE TIME] => 0.0000084460 [SLOWER BY] => 24.05% 

दुर्भाग्य से, मुझे किसी भी PHP फ़ंक्शन का पता नहीं है जो यह कर सकता है।
आप इस तरह आसानी से अपने खुद के रोल कर सकते हैं:

 function replace_first($find, $replace, $subject) { // stolen from the comments at PHP.net/str_replace // Splits $subject into an array of 2 items by $find, // and then joins the array with $replace return implode($replace, explode($find, $subject, 2)); } 

मैंने इस छोटे फ़ंक्शन को बना दिया है जो रैगेक्स की आवश्यकता के बिना, स्ट्रिंग पर स्ट्रिंग (केस-संवेदी) की सीमा को बदलता है। यह बढ़िया काम करता है।

 function str_replace_limit($search, $replace, $string, $limit = 1) { $pos = strpos($string, $search); if ($pos === false) { return $string; } $searchLen = strlen($search); for ($i = 0; $i < $limit; $i++) { $string = substr_replace($string, $replace, $pos, $searchLen); $pos = strpos($string, $search); if ($pos === false) { break; } } return $string; } 

उदाहरण उपयोग:

 $search = 'foo'; $replace = 'bar'; $string = 'foo wizard makes foo brew for evil foo and jack'; $limit = 2; $replaced = str_replace_limit($search, $replace, $string, $limit); echo $replaced; // bar wizard makes bar brew for evil foo and jack 

नियमित अभिव्यक्ति का उपयोग करने का सबसे आसान तरीका होगा

दूसरा तरीका स्ट्रॉप्स () के साथ स्ट्रिंग की स्थिति को खोजने के लिए और फिर एक सबस्ट्रेट_रेले ()

लेकिन मैं वास्तव में RegExp के लिए जाना होगा

 $string = 'this is my world, not my world'; $find = 'world'; $replace = 'farm'; $result = preg_replace("/$find/",$replace,$string,1); echo $result; 
 function str_replace_once($search, $replace, $subject) { $pos = strpos($subject, $search); if ($pos === false) { return $subject; } return substr($subject, 0, $pos) . $replace . substr($subject, $pos + strlen($search)); } 

उदाहरण के लिए पहले 'ओ' से 'ईए' की जगह :

 $a='I love you'; echo str_replace_first('o','ea',$a); //output: I leave you 

कार्यक्रम:

 function str_replace_first($this,$that,$where) { $b=strpos($where,$this); return substr($where,0,$b).$that.substr($where,$b+1); } 

@ रैनोकॉर के उत्तर पर विस्तार करने के लिए, मैंने एक फ़ंक्शन लिखा है जो कि 100% पिछड़े-संगत है str_replace() । यही है, आप str_replace() सभी str_replace() को str_replace() साथ कुछ भी गड़बड़ किए बिना बदल सकते हैं, यहां तक ​​कि वे $search , $replace और / या $subject लिए एरे का उपयोग कर रहे हैं

यदि फ़ंक्शन कॉल को ($string===strval(intval(strval($string)))) साथ बदलना चाहते हैं, तो फ़ंक्शन पूरी तरह से आत्म-निहित हो सकता है, लेकिन मैं इसके खिलाफ valid_integer() क्योंकि valid_integer() एक है बल्कि उपयोगी कार्य जब स्ट्रिंग के रूप में प्रदान किए गए पूर्णांक के साथ काम करते हैं।

नोट: जब भी संभव हो, str_replace_limit() इसके बजाय str_replace_limit() का प्रयोग str_replace() , इसलिए str_replace() को कॉल करने के लिए str_replace() को कॉल किया जा सकता है str_replace_limit() साथ प्रदर्शन के हिट के बारे में चिंता किए बिना।

प्रयोग

 <?php $search = 'a'; $replace = 'b'; $subject = 'abcabc'; 
 $limit = -1; // No limit $new_string = str_replace_limit($search, $replace, $subject, $count, $limit); echo $count.' replacements -- '.$new_string; 

2 प्रतिस्थापन – बीबीसीबीबीसी

 $limit = 1; // Limit of 1 $new_string = str_replace_limit($search, $replace, $subject, $count, $limit); echo $count.' replacements -- '.$new_string; 

1 प्रतिस्थापन – बीबीसीएबीसी

 $limit = 10; // Limit of 10 $new_string = str_replace_limit($search, $replace, $subject, $count, $limit); echo $count.' replacements -- '.$new_string; 

2 प्रतिस्थापन – बीबीसीबीबीसी

समारोह

 <?php /** * Checks if $string is a valid integer. Integers provided as strings (eg '2' vs 2) * are also supported. * @param mixed $string * @return bool Returns boolean TRUE if string is a valid integer, or FALSE if it is not */ function valid_integer($string){ // 1. Cast as string (in case integer is provided) // 1. Convert the string to an integer and back to a string // 2. Check if identical (note: 'identical', NOT just 'equal') // Note: TRUE, FALSE, and NULL $string values all return FALSE $string = strval($string); return ($string===strval(intval($string))); } /** * Replace $limit occurences of the search string with the replacement string * @param mixed $search The value being searched for, otherwise known as the needle. An * array may be used to designate multiple needles. * @param mixed $replace The replacement value that replaces found search values. An * array may be used to designate multiple replacements. * @param mixed $subject The string or array being searched and replaced on, otherwise * known as the haystack. If subject is an array, then the search and replace is * performed with every entry of subject, and the return value is an array as well. * @param string $count If passed, this will be set to the number of replacements * performed. * @param int $limit The maximum possible replacements for each pattern in each subject * string. Defaults to -1 (no limit). * @return string This function returns a string with the replaced values. */ function str_replace_limit( $search, $replace, $subject, &$count, $limit = -1 ){ // Set some defaults $count = 0; // Invalid $limit provided. Throw a warning. if(!valid_integer($limit)){ $backtrace = debug_backtrace(); trigger_error('Invalid $limit `'.$limit.'` provided to '.__function__.'() in '. '`'.$backtrace[0]['file'].'` on line '.$backtrace[0]['line'].'. Expecting an '. 'integer', E_USER_WARNING); return $subject; } // Invalid $limit provided. Throw a warning. if($limit<-1){ $backtrace = debug_backtrace(); trigger_error('Invalid $limit `'.$limit.'` provided to '.__function__.'() in '. '`'.$backtrace[0]['file'].'` on line '.$backtrace[0]['line'].'. Expecting -1 or '. 'a positive integer', E_USER_WARNING); return $subject; } // No replacements necessary. Throw a notice as this was most likely not the intended // use. And, if it was (eg part of a loop, setting $limit dynamically), it can be // worked around by simply checking to see if $limit===0, and if it does, skip the // function call (and set $count to 0, if applicable). if($limit===0){ $backtrace = debug_backtrace(); trigger_error('Invalid $limit `'.$limit.'` provided to '.__function__.'() in '. '`'.$backtrace[0]['file'].'` on line '.$backtrace[0]['line'].'. Expecting -1 or '. 'a positive integer', E_USER_NOTICE); return $subject; } // Use str_replace() whenever possible (for performance reasons) if($limit===-1){ return str_replace($search, $replace, $subject, $count); } if(is_array($subject)){ // Loop through $subject values and call this function for each one. foreach($subject as $key => $this_subject){ // Skip values that are arrays (to match str_replace()). if(!is_array($this_subject)){ // Call this function again for $this_function = __FUNCTION__; $subject[$key] = $this_function( $search, $replace, $this_subject, $this_count, $limit ); // Adjust $count $count += $this_count; // Adjust $limit, if not -1 if($limit!=-1){ $limit -= $this_count; } // Reached $limit, return $subject if($limit===0){ return $subject; } } } return $subject; } elseif(is_array($search)){ // Only treat $replace as an array if $search is also an array (to match str_replace()) // Clear keys of $search (to match str_replace()). $search = array_values($search); // Clear keys of $replace, if applicable (to match str_replace()). if(is_array($replace)){ $replace = array_values($replace); } // Loop through $search array. foreach($search as $key => $this_search){ // Don't support multi-dimensional arrays (to match str_replace()). $this_search = strval($this_search); // If $replace is an array, use the value of $replace[$key] as the replacement. If // $replace[$key] doesn't exist, just an empty string (to match str_replace()). if(is_array($replace)){ if(array_key_exists($key, $replace)){ $this_replace = strval($replace[$key]); } else { $this_replace = ''; } } else { $this_replace = strval($replace); } // Call this function again for $this_function = __FUNCTION__; $subject = $this_function( $this_search, $this_replace, $subject, $this_count, $limit ); // Adjust $count $count += $this_count; // Adjust $limit, if not -1 if($limit!=-1){ $limit -= $this_count; } // Reached $limit, return $subject if($limit===0){ return $subject; } } return $subject; } else { $search = strval($search); $replace = strval($replace); // Get position of first $search $pos = strpos($subject, $search); // Return $subject if $search cannot be found if($pos===false){ return $subject; } // Get length of $search, to make proper replacement later on $search_len = strlen($search); // Loop until $search can no longer be found, or $limit is reached for($i=0;(($i<$limit)||($limit===-1));$i++){ // Replace $subject = substr_replace($subject, $replace, $pos, $search_len); // Increase $count $count++; // Get location of next $search $pos = strpos($subject, $search); // Break out of loop if $needle if($pos===false){ break; } } // Return new $subject return $subject; } } 

PHP में आप स्ट्रिंग के अक्षरों पर पुनरावृति कर सकते हैं या पत्रों तक पहुंच सकते हैं, क्योंकि सरणी के तत्वों तक पहुंचना संभव है।

स्निपेट जो स्ट्रिंग के केवल पहले अक्षर की प्रतिलिपि बनाता है:

 $word[0] = str_replace($find, $replace, $word[0]); 

आप प्रत्येक पत्र को घुंघराले ब्रैकेट का उपयोग करके भी एक्सेस कर सकते हैं। मैं लोअरकेस पॉलिश उच्चारण वाले वर्णों को अपरकेस के लिए बदलने के लिए निम्न कोड का उपयोग करता हूं।

 $word{0} = str_replace( array('ą', 'ż', 'ś', 'ź', 'ę', 'ć', 'ł', 'ó', 'ń'), array('Ą', 'Ż', 'Ś', 'Ź', 'Ę', 'Ć', 'Ł', 'Ó', 'Ń'), $word{0} ); 

मेरे परीक्षण के परिणाम के अनुसार, मैं karim79 द्वारा प्रदान की गई नियमित_एक्सप्रेस को वोट देना चाहता हूं। (मेरे पास अब वोट करने के लिए पर्याप्त प्रतिष्ठा नहीं है!)

ज़ोंबाट का समाधान बहुत अधिक फ़ंक्शन कॉल्स का उपयोग करता है, मैं कोड को सरल भी करता हूं मैं 100,000 बार दोनों समाधानों को चलाने के लिए PHP 5.4 का उपयोग कर रहा हूं, और यहां इसका परिणाम है:

 $str = 'Hello abc, have a nice day abc! abc!'; $pos = strpos($str, 'abc'); $str = substr_replace($str, '123', $pos, 3); 

==> 1.85 सेकंड

 $str = 'Hello abc, have a nice day abc! abc!'; $str = preg_replace('/abc/', '123', $str, 1); 

==> 1.35 सेकंड

जैसा कि आप देख सकते हैं। Preg_replace का प्रदर्शन इतना बुरा नहीं है जितना बहुत लोग सोचते हैं। तो अगर मैं आपका नियमित एक्सप्रेस जटिल नहीं है, तो मैं क्लासिक समाधान का सुझाव देता हूं।

ज़ोंबाट के उत्तर पर विस्तार (जो मुझे सबसे अच्छा जवाब मानना ​​है), मैंने अपने फ़ंक्शन के एक पुनरावर्ती संस्करण को बनाया है, जो कि कितने घटनाओं को आप बदलना चाहते हैं, यह निर्दिष्ट करने के लिए $limit पैरामीटर में ले जाता है

 function str_replace_limit($haystack, $needle, $replace, $limit, $start_pos = 0) { if ($limit <= 0) { return $haystack; } else { $pos = strpos($haystack,$needle,$start_pos); if ($pos !== false) { $newstring = substr_replace($haystack, $replace, $pos, strlen($needle)); return str_replace_limit($newstring, $needle, $replace, $limit-1, $pos+strlen($replace)); } else { return $haystack; } } } 

स्ट्रिंग के लिए

 $string = 'OOO.OOO.OOO.S'; $search = 'OOO'; $replace = 'B'; //replace ONLY FIRST occurance of "OOO" with "B" $string = substr_replace($string,$replace,0,strlen($search)); //$string => B.OOO.OOO.S //replace ONLY LAST occurance of "OOOO" with "B" $string = substr_replace($string,$replace,strrpos($string,$search),strlen($search)) //$string => OOO.OOO.BS //replace ONLY LAST occurance of "OOOO" with "B" $string = strrev(implode(strrev($replace),explode(strrev($search),strrev($string),2))) //$string => OOO.OOO.BS 

एक एकल वर्ण के लिए

 $string[strpos($string,$search)] = $replace; //EXAMPLE $string = 'OOOOS'; $search = 'O'; $replace = 'B'; //replace ONLY FIRST occurance of "O" with "B" $string[strpos($string,$search)] = $replace; //$string => BOOOS //replace ONLY LAST occurance of "O" with "B" $string[strrpos($string,$search)] = $replace; // $string => BOOBS 

लोगों को क्या कहते हुए पूरक, याद रखें कि संपूर्ण स्ट्रिंग एक सरणी है:

 $string = "Lorem ipsum lá lá lá"; $string[0] = "B"; echo $string; 

"बोरम ipsum lá lá lá"

आप इसका उपयोग कर सकते हैं:

 function str_replace_once($str_pattern, $str_replacement, $string){ if (strpos($string, $str_pattern) !== false){ $occurrence = strpos($string, $str_pattern); return substr_replace($string, $str_replacement, strpos($string, $str_pattern), strlen($str_pattern)); } return $string; } 

Php.net से यह उदाहरण मिला

उपयोग:

 $string = "Thiz iz an examplz"; var_dump(str_replace_once('z','Z', $string)); 

आउटपुट:

 ThiZ iz an examplz 

इससे प्रदर्शन को थोड़ा कम हो सकता है, लेकिन सबसे आसान समाधान।

इस फ़ंक्शन को @रेनोकॉर द्वारा उत्तर से भारी प्रेरित किया गया है यह फ़ंक्शन बहु बाइट सुरक्षित बनाता है

 function str_replace_limit($search, $replace, $string, $limit) { $i = 0; $searchLength = mb_strlen($search); while(($pos = mb_strpos($string, $search)) !== false && $i < $limit) { $string = mb_substr_replace($string, $replace, $pos, $searchLength); $i += 1; } return $string; } function mb_substr_replace($string, $replacement, $start, $length = null, $encoding = null) { $string = (array)$string; $encoding = is_null($encoding) ? mb_internal_encoding() : $encoding; $length = is_null($length) ? mb_strlen($string) - $start : $length; $string = array_map(function($str) use ($replacement, $start, $length, $encoding){ $begin = mb_substr($str, 0, $start, $encoding); $end = mb_substr($str, ($start + $length), mb_strlen($str), $encoding); return $begin . $replacement . $end; }, $string); return ( count($string) === 1 ) ? $string[0] : $string; } 

यहां हमारे साधारण संशोधित स्ट्र_रेलेले () फ़ंक्शंस को लपेटने के लिए बनाया गया एक सरल वर्ग है I

हमारा php :: str_rreplace () फ़ंक्शन आपको एक रिवर्स, सीमित स्ट्रैरेप्ले () को जारी करने की भी अनुमति देता है जो स्ट्रिंग के अंतिम एक्स इंस्टेंस (केवल) को बदलने की कोशिश में बहुत आसान हो सकता है

ये उदाहरण दोनों preg_replace () का उपयोग करते हैं

 <?php class php { /** * str_replace() from the end of a string that can also be limited eg replace only the last instance of '</div>' with '' * * @param string $find * @param string $replace * @param string $subject * @param int $replacement_limit | -1 to replace all references * * @return string */ public static function str_replace($find, $replace, $subject, $replacement_limit = -1) { $find_pattern = str_replace('/', '\/', $find); return preg_replace('/' . $find_pattern . '/', $replace, $subject, $replacement_limit); } /** * str_replace() from the end of a string that can also be limited eg replace only the last instance of '</div>' with '' * * @param string $find * @param string $replace * @param string $subject * @param int $replacement_limit | -1 to replace all references * * @return string */ public static function str_rreplace($find, $replace, $subject, $replacement_limit = -1) { return strrev( self::str_replace(strrev($find), strrev($replace), strrev($subject), $replacement_limit) ); } } 
 $str = "Hello there folks!" $str_ex = explode("there, $str, 2); //explodes $string just twice //outputs: array ("Hello ", " folks") $str_final = implode("", $str_ex); // glues above array together // outputs: str("Hello folks") 

वहां एक और अतिरिक्त जगह है, लेकिन यह मेरे मामले में बैकगन्

इसके उदाहरणों के केवल प्रथम या प्रथम जोड़े (गिनती मूल्य देकर) को बदलने के लिए एक समाधान ढूंढना आसान है। उदाहरण के पिछले या अंतिम दो जगहों को बदलने के लिए कई समाधान नहीं हैं।

शायद str_replace ($ का पता, $ की जगह, $ विषय, -3) की तरह कुछ पिछले तीन उदाहरणों को बदल लेना चाहिए

वैसे भी सिर्फ एक सुझाव

यह मेरा पहला जवाब है, मैं इसे सही ढंग से करने की उम्मीद करता हूं। इस समस्या के लिए str_replace फ़ंक्शन के चौथे तर्क का उपयोग क्यों नहीं करें?

 mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 

गिनती: यदि पारित किया जाता है, तो यह प्रतिस्थापन की संख्या को निर्धारित किया जाएगा।

संपादित करें: यह उत्तर गलत है, क्योंकि str_replace का 4 वां पैरामीटर एक चर है जो प्रतिस्थापन की संख्या को सौंपा जाता है। यह preg_replace के साथ असंगत है, जिसमें एक चौथा पैरामीटर $limit और 5 वीं पैरामीटर &$count