I 3 argomenti della funzione str_replace sono carattere da sostituire, carattere con cui rimpiazzare e stringa su cui effettuare la sostituzione.
A te non funzionava la semplice str_replace() perché non indicavi la stringa come terzo argomento:
codice:
$chiave = str_replace("<", "<", $chiave);
$chiave = str_replace(">", ">", $chiave);
Comunque puoi usare la htmlentities() che rettifica i caratteri html in entità (solo quelle supportate da HTML) oppure la più completa htmlspecialchars() che codifica anche i caratteri speciali di HTML a cui non corrisponde una relativa entità.
Entrambe possono essere usate con un argomento solo ma hanno la possibilità di averne 3 per definire come comportarsi su apici e virgolette o per definire il tipo di stringa in output.