limpar a string usando a lista de permissões regex php

Eu quero higienizar uma$string usando a próxima lista branca:

Inclui a-z, A-Z, 0-9 e alguns caracteres comuns incluídos nas postagens[]=+-¿?¡!<>$%^&*'"()/#@*,.:;_|.
Bem sotaques espanhóis comoá,é,í,ó,ú eÁÉÍÓÚ

LISTA BRANCA

abcdefghijklmnñopqrstuvwxyzñáéíóúABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ0123456789[]=+-¿?¡!<>$%^&*'"()/#@*,.:;_|

Eu quero higienizar essa string

 $string="//abcdefghijklmnñopqrstuvwxyzñáéíóúABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ0123456789[]=+-¿?¡!<>$%^&*'()/#@*,.:;_| |||||||||| ] ¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶¸¹º»¼½ mmmmm onload onclick='' [ ? / < ~ # ` ! @ $ % ^ & * ( ) + = } | :  ; ' , > { space !#$%&'()*+,-./:;<=>?@[\]^_`{|}~ <html>sdsd</html> ** *`` `` ´´ {} {}[] ````... ;;,,´'¡'!!!!¿?ña ñaña ÑA á é´´ è ´ 8i ó ú à à` à è`ì`ò ù &  > < ksks < wksdsd '' \" \' <script>alert('hi')</script>";

Eu tentei esse regex, mas ele não funciona

//$regex = '/[^\w\[\]\=\+\-\¿\?\¡\!\<\>\$\%\^\&\*\'\"\(\)\/\#\@\*\,\.\/\:\;\_\|]/i';
//preg_replace($regex, '', $string);

Alguém tem uma idéia de como higienizar essa cadeia de acordo com os valores da lista de permissões?

questionAnswers(1)

yourAnswerToTheQuestion