Ricerca con caratteri speciali in PHP

php
if(!empty($_REQUEST['query'])){
			$criteria['$or'] = [];
			$testRegex = $_REQUEST['query'];
			$diacriticMap = [
				'A'=>'AⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ',
				'AA'=>'Ꜳ',
				'AE'=>'ÆǼǢ',
				'AO'=>'Ꜵ',
				'AU'=>'Ꜷ',
				'AV'=>'ꜸꜺ',
				'AY'=>'Ꜽ',
				'B'=>'BⒷBḂḄḆɃƂƁ',
				'C'=>'CⒸCĆĈĊČÇḈƇȻꜾ',
				'D'=>'DⒹDḊĎḌḐḒḎĐƋƊƉꝹ',
				'DZ'=>'DZDŽ',
				'Dz'=>'DzDž',
				'E'=>'EⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎ',
				'F'=>'FⒻFḞƑꝻ',
				'G'=>'GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ',
				'H'=>'HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ',
				'I'=>'IⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ',
				'J'=>'JⒿJĴɈ',
				'K'=>'KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ',
				'L'=>'LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ',
				'LJ'=>'LJ',
				'Lj'=>'Lj',
				'M'=>'MⓂMḾṀṂⱮƜ',
				'N'=>'NⓃNǸŃÑṄŇṆŅṊṈȠƝꞐꞤ',
				'NJ'=>'NJ',
				'Nj'=>'Nj',
				'O'=>'OⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ',
				'OI'=>'Ƣ',
				'OO'=>'Ꝏ',
				'OU'=>'Ȣ',
				'P'=>'PⓅPṔṖƤⱣꝐꝒꝔ',
				'Q'=>'QⓆQꝖꝘɊ',
				'R'=>'RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ',
				'S'=>'SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ',
				'T'=>'TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ',
				'TZ'=>'Ꜩ',
				'U'=>'UⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ',
				'V'=>'VⓋVṼṾƲꝞɅ',
				'VY'=>'Ꝡ',
				'W'=>'WⓌWẀẂŴẆẄẈⱲ',
				'X'=>'XⓍXẊẌ',
				'Y'=>'YⓎYỲÝŶỸȲẎŸỶỴƳɎỾ',
				'Z'=>'ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ',
				'a'=>'aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ',
				'aa'=>'ꜳ',
				'ae'=>'æǽǣ',
				'ao'=>'ꜵ',
				'au'=>'ꜷ',
				'av'=>'ꜹꜻ',
				'ay'=>'ꜽ',
				'b'=>'bⓑbḃḅḇƀƃɓ',
				'c'=>'cⓒcćĉċčçḉƈȼꜿↄ',
				'd'=>'dⓓdḋďḍḑḓḏđƌɖɗꝺ',
				'dz'=>'dzdž',
				'e'=>'eⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ',
				'f'=>'fⓕfḟƒꝼ',
				'g'=>'gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ',
				'h'=>'hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ',
				'hv'=>'ƕ',
				'i'=>'iⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı',
				'j'=>'jⓙjĵǰɉ',
				'k'=>'kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ',
				'l'=>'lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ',
				'lj'=>'lj',
				'm'=>'mⓜmḿṁṃɱɯ',
				'n'=>'nⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ',
				'nj'=>'nj',
				'o'=>'oⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔꝋꝍɵ',
				'oi'=>'ƣ',
				'ou'=>'ȣ',
				'oo'=>'ꝏ',
				'p'=>'pⓟpṕṗƥᵽꝑꝓꝕ',
				'q'=>'qⓠqɋꝗꝙ',
				'r'=>'rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ',
				's'=>'sⓢsßśṥŝṡšṧṣṩșşȿꞩꞅẛ',
				't'=>'tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ',
				'tz'=>'ꜩ',
				'u'=>'uⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ',
				'v'=>'vⓥvṽṿʋꝟʌ',
				'vy'=>'ꝡ',
				'w'=>'wⓦwẁẃŵẇẅẘẉⱳ',
				'x'=>'xⓧxẋẍ',
				'y'=>'yⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ',
				'z'=>'zⓩzźẑżžẓẕƶȥɀⱬꝣ'
			];
			foreach($diacriticMap as $kk=>$vv){
				$testRegex = str_replace($kk,"[$vv]",$testRegex);
			}
			/*print_r($testRegex);
			exit;*/
			$criteria['$or'][0]['email'] = new MongoRegex($_REQUEST['query'],'i');
			$criteria['$or'][1]['name'] = new MongoRegex($testRegex,'i');
			$criteria['$or'][2]['surname'] = new MongoRegex($testRegex,'i');