Может ли кто-нибудь дать мне краткое изложение различий, пожалуйста?
На мой взгляд, они оба делают то же самое?
благодаря
 str_replace заменяет определенное вхождение строки, например, «foo» будет соответствовать и заменять это: «foo».  preg_replace будет выполнять регулярное выражение, например, «/f.{2}/» будет соответствовать и заменять «foo», но также «fey», «fir», «fox», «f12» и т. д. 
[РЕДАКТИРОВАТЬ]
Посмотреть на себя:
 $string = "foo fighters"; $str_replace = str_replace('foo','bar',$string); $preg_replace = preg_replace('/f.{2}/','bar',$string); echo 'str_replace: ' . $str_replace . ', preg_replace: ' . $preg_replace; 
Выход:
str_replace: барабанные бойцы, preg_replace: bar barhters
🙂
  str_replace просто заменит фиксированную строку другой фиксированной строкой, и она будет намного быстрее. 
Функции регулярного выражения позволяют вам искать и заменять нефиксированным шаблоном, называемым регулярным выражением . Существует много «ароматов» регулярного выражения, которые в основном сходны, но имеют некоторые особенности; тот, о котором мы говорим, это Perl Compatible Regular Equions ( PCRE ).
  Если они выглядят одинаково для вас, вы должны использовать str_replace . 
  str_replace ищет чистые текстовые вхождения, а preg_replace для шаблонов.