Теоретически да, вы правы. Возможно, команда PHP могла бы джиггером preg_replace
проанализировать передаваемый шаблон и затем использовать код для str_replace
, если не увидела мета-символов. Предполагая, что анализ не был слишком тяжелым, это может дать лучшие результаты производительности.
Однако то, как организован исходный код PHP (то есть код, используемый для реализации PHP), не подходит для такого совместного использования. PHP (в некотором смысле) является менее полным языком и скорее набором модулей.
Итак, изначально группа PHP решила держаться подальше от такого кросс-модульного опыления. На этом этапе изменение функции preg_replace
для такого анализа может привести к поломке большого количества кода, а повышение производительности будет незначительным.
Наконец, сам анализ является более сложной проблемой, чем вы думаете. Скажите, а этот шаблон
'/123/'
значит, я должен искать буквальный текст
123
или буквальный текст
/123/
Легко придумать убедительные аргументы для любой интерпретации, что вводит дополнительный уровень путаницы в использование функции.
Интересная идея в теории, но на практике и в контексте вселенной PHP она создает гораздо больше проблем, чем решает.