Autor Zpráva
Rellik
Profil
Zdravím,
potřeboval bych poradit s funkcí, která zkontroluje odesílaný formulář slovo po slovu a pokud se vyskytne nějaké nežádoucí (sprosté) slovo, aby script vypsal hlášku, že takovou zprávu nelze odeslat.
Slova z formuláře dám do pole, které chci pak pomocí jiného pole porovnat a pokud se vyskytne aspoń jedna shoda, tak to dál nebude pokračovat a form se neodešle.

Zkoušel sem to tak:

$zprava_array = explode( " ", $obsah );  // $obsah je posílán z formu 
		$ochrana = array('nežádouci','nebo','sprosté','slova');

				if (in_array($ochrana,$zprava_array))
				     {
          				echo 'Zpráva obsahuje nepovolené nebo neslušné výrazy a nebude odeslána!!';
	                		}
			                else { //pokračování scriptu...	

Bohužel to není tak jednoduché jak sem původně myslel a nějak mě nenapadá, jak to jinak provést. Pokud dosadím určité slovo přímo
if (in_array("nežádoucí",$zprava_array))
tak to jde.
Díky za odpověď nebo nějaké nakopnutí.
Alphard
Profil
Musel byste to projít cyklem., nebo použít jiné funkce pro práci s poli. Pořád to ale bude hledat přesnou shodu.
Druhá možnost je sestavit regulár, do kterého můžete dát třeba jen část slova. Více slov můžete spojit pomocí nežádoucí|slova|a|výrazy. Přesnou syntaxi si určitě najdete.
Rellik
Profil
Díky za odpověď,
cyklem to nepůjde, protože už předtím je tam pár věcí, které jsou filtrovány - znaky < >, dělení dlouhých slov, změna www nebo http na aktivní odkaz...
Pokud to bude hledat pouze stejné výrazy mi nějak moc nevadí. Poradíte mi aspoň s touto možností?
Díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0