おそらくもっと良い方法があると思いますが、最初のものにプレースホルダーを使用し、残りを置き換えてから、プレースホルダーを元に戻してはどうでしょうか?
$full_text = file_get_contents($filename);
$text_to_replace = '<div id="fb-root"></div>';
$placeholder = '__PLACEHOLDER__';
$full_text = str_replace($text_to_replace, $placeholder, $full_text, 1);
$full_text = str_replace($text_to_replace, '', $full_text);
$full_text = str_replace($placeholder, $text_to_replace, $full_text);
ここで重要なのは、 への最初の呼び出しの 4 番目のパラメーターstr_replace
です。これは、検索されたテキストの 1 つのインスタンスのみを置換するように関数に指示します。最初のインスタンスのみをプレースホルダーに置き換え、2 回目の呼び出しで残りのすべてのインスタンスを削除し、3 回目の呼び出しでプレースホルダーを元のテキストに置き換えます。