Я хочу заменить F, но не \ F.
Я пробовал следующий код, без везения.
preg_replace("/[^\\]F/", "f", $str);
Попробуй это :
preg_replace("/(?<!\\\)F/", "f", $str);
Это работает.
$string = preg_replace('/([^\\\]|^)F/', '$1f', $string);
Причина состоит в трех обратных косых чертах, потому что первый из них избегает второго для строки, и тот ускользает от последнего для регулярного выражения. Вот тема на другом сайте: http://forums.devnetwork.net/viewtopic.php?t=125752
Обновление: благодаря @Damp и @webbiedave