आप तार से अधिक संख्या है के साथ काम कर रहे हैं, तो तब भागों को रेगेक्स के साथ हल करना इतना आसान नहीं है, क्योंकि आपके पास संख्याएं एक संख्यात्मक भाग से दूसरी संख्या में बहती जा सकती हैं।
उदाहरण के लिए यदि आपके पास INV00-10-99
है जो INV00-11-00
तक बढ़ाना चाहिए।
मैं निम्नलिखित के साथ समाप्त हो गया:
for ($i = strlen($string) - 1; $i >= 0; $i--) {
if (is_numeric($string[$i])) {
$most_significant_number = $i;
if ($string[$i] < 9) {
$string[$i] = $string[$i] + 1;
break;
}
// The number was a 9, set it to zero and continue.
$string[$i] = 0;
}
}
// If the most significant number was set to a zero it has overflowed so we
// need to prefix it with a '1'.
if ($string[$most_significant_number] === '0') {
$string = substr_replace($string, '1', $most_significant_number, 0);
}
+1 मैं इस एक पसंद करते हैं। –
क्या होगा यदि मेरे पास "XXX -342" की तरह स्ट्रिंग है? यह $ मैचों [0] या $ मैचों [1] में होगा? – tampe125
@ कोडडिक्ट: क्या आपको नहीं लगता कि कॉलबैक एक "छोटा" ओवरहेड है? नियमित '+ 1' का उपयोग क्यों न करें? – zerkms