Certo, la complessità è uguale, ma in genere le funzioni interne, non basandosi su un linguaggio interpretato, sono più veloci e meglio ottimizzate, no? Voglio dire, è più efficiente un preg_replace() o una sua emulazione in PHP?

Purtroppo non è che ci sia molta logica, lo scopo dell'applicativo è quello di prendere due liste di keyword ed eliminare dalla seconda tutte le keyword che contengono al loro interno keyword presenti nella prima. Al momento lo faccio verificando le stringhe tramite stripos() ma sto cercando anche un modo che mi permetta di individuare keyword intere all'interno delle stringhe della seconda lista (ad esempio, far si che "posa" venga individuato in "lunga posa" ma non in "mariposa").