मैं PHP में preg_replace उपयोग कर रहा हूँ खोजने के लिए और एक स्ट्रिंग में विशिष्ट शब्दों को बदलने के लिए, इस तरह के साथ मामले असंवेदनशील मैच:पीएचपी preg_replace: केस संवेदी प्रतिस्थापन
$subject = "Apple apple";
print preg_replace('/\bapple\b/i', 'pear', $subject);
कौन सा परिणाम 'नाशपाती नाशपाती' देता है।
मैं जो करना चाहता हूं वह एक मामले में असंवेदनशील तरीके से एक शब्द से मेल खाता है, लेकिन इसे बदलने के मामले का सम्मान करें - परिणाम 'नाशपाती नाशपाती' देना।
निम्नलिखित काम करता है, लेकिन एक छोटे से लंबे समय से मेरे लिए चढ़ा हुआ लगता है:
$pattern = array('/Apple\b/', '/apple\b/');
$replacement = array('Pear', 'pear');
$subject = "Apple apple";
print preg_replace($pattern, $replacement, $subject);
वहाँ यह करने के लिए एक बेहतर तरीका है?
अपडेट: इस कार्य के प्रयोजनों के लिए नीचे उठाए गए एक उत्कृष्ट प्रश्न के आगे मैं केवल 'शीर्षक केस' का सम्मान करना चाहता हूं - तो एक शब्द का पहला अक्षर पूंजी है या नहीं।
एकमात्र चीज जो अस्पष्ट बनी हुई है: क्या होगा यदि आपके प्रतिस्थापन और मूल शब्द की अलग-अलग लंबाई और मूल शब्द हो उच्च पद पर पूंजी पत्र? अर्थात। तब 'सेब' और 'पियर' क्या? –
उत्कृष्ट बिंदु। इस विशेष कार्य के प्रयोजनों के लिए, मैं केवल 'शीर्षक केस' का सम्मान करना चाहता हूं (इसलिए पहला पत्र पूंजी है या नहीं)। और स्पष्टता जोड़ने के लिए बहुत बहुत धन्यवाद। – colin