En basitinden bu geldi aklıma, en azından isteğinizi gerçekleştiriyor hocam,
<?php
$kelimeler = array(
    "NADİR#ENDER",
    "KANUN#YASA"
);
$metin = "ENDER görülen KANUNlar var ama NADİR görülen YASAlarda var";
function parca($x) {
    $c = "";
    while (strlen($x) > 0) {
        $c = $c.substr($x,0,1)."|#|";
        $x = substr($x,1);
    }
    return $c;
}
foreach ($kelimeler as $kelime) {
    $kelimeler2 = explode('#', $kelime);
    $ara1 = $kelimeler2[0];
    $koy1 = "|#|".parca($kelimeler2[1]);
    $ara2 = $kelimeler2[1];
    $koy2 = "|#|".parca($kelimeler2[0]);
    
    $metin = str_replace($ara1, $koy1, $metin);
    $metin = str_replace($ara2, $koy2, $metin);
}
$metin = str_replace("|#|", "", $metin);
echo $metin;
?>