मैं तो इस तरह की स्ट्रिंग से आम मास्क बनाने के लिए कोशिश कर रहा हूँ:परिणामों को ओवरलैप किए बिना स्ट्रिंग के भीतर एकाधिक स्ट्रिंग्स को मैं कैसे बदल सकता हूं?
012abc.d+e_fg~hijk => 012{start}.d+{middle}_fg~{end}jk
बदल देते हैं:
$arrFromTo = array(
'st' => '{pre}',
'abc' => '{start}',
'e' => '{middle}',
'hi' => '{end}',
'dd' => '{post}'
);
इसके बजाय मैं बजाय (str_replace
के एक पाश का उपयोग कर प्रतिस्थापन ओवरलैपिंग रखने के लिए और कुछ इस तरह मिल ' ओं):
012{{pre}art}.d+{mi{post}le}_fg~{end}jk
क्योंकि st
पहले से ही में पाया जाता है प्रतिस्थापित {start}
और dd
{middle}
में पाया गया है।
आप निम्न को कैसे प्रतिस्थापित करेंगे?
$str = 'abc.d+e_fg~hijk';
echo replace_vars($str); // Desired output: 012{start}.d+{middle}_fg~{end}kJ
मैं सरणी को पुनर्व्यवस्थित करने के बारे में सोच रहा था इसलिए 'dd '=>' {post} '' एक अलग स्थिति में था, लेकिन इससे अन्य मुद्दों को उठाया गया। –
अक्सर मैं रेगेक्स का सुझाव नहीं देता हूं, लेकिन इस मामले में यह समझदार हो सकता है ताकि आप –
@scrowler को प्रतिस्थापित करने से पहले जो उम्मीद कर रहे हैं उसकी जांच करने के लिए आप लुकहेड/बैक करें। दुर्भाग्य से मेरे पीसीआर लाइब्रेरी में परिवर्तनीय लंबाई नकारात्मक दिखने के साथ एक बग है। मैं पीसीआरई लाइब्रेरी को अपग्रेड करने में असमर्थ हूं इसलिए मैंने इस बिंदु पर उस पथ को छोड़ना बंद कर दिया। – Ryan