Я использую preg_replace в PHP для поиска и замены определенных слов в строке, например:
$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);
Есть ли лучший способ сделать это?
Обновление. В дополнение к отличному запросу, поднятому ниже, для целей этой задачи я хочу только уважать "заголовок" - так ли первая буква слова является капиталом.