Miten tuo preg_match oikeastaan "kootaan" loppujenlopuksi? Jos halutaan ilmoittaa, että muuttuja sisältää kiellettyjä merkkejä (sallittuja ovat vain kirjaimet ja numerot), niin miten kaikesta muusta ylimääräisestä voi saada ilmoitettua?
Lisäys: Niin ja sallittuja olisivat tarkalleen ottaen numerot 0-9 sekä isot ja pienet kirjaimet.
Tarkistetaan sisältääkö merkkijono vain sallittuja ja jos ei, annetaan virheilmoitus. Tässä tapauksessa esimerkiksi testataan osuuko lauseke "^[0-9a-zA-Z]+$" (jos merkkijono saa olla tyhjä, sitten + voi vaihtaa *). Jos haluaa ääkkösetkin mukaan, joku muu saa siihen sanoa, itse en osaa sanoa miten pahasti PHP sekoilee nykyään eri merkistökoodausten kanssa.
myös
if(ctype_alnum(string $text)==true) { }
toimii tietääkseni tässä tapauksessa https://www.php.net/manual/en/function.ctype-alnum.php
ÄÖÅ -kirjaimista en osaa sanoa.
Oletko lukenut oppaan?
<?php if (preg_match_all("/[^0-9A-Za-z]/s", $data, $m)) { $m = implode("", array_unique($m[0])); throw new Exception("Virheellisiä merkkejä: {$m}"); }
Noissa ragexeishän on myös joku tapa merkata kaikkien kielten kaikki aakkoset (unicode-ryhmä). En nyt muista miten enkä kerkee tarkistaa, mutta php:n manuaalista löytyvät.
Edit. Kerkesin sittenkin, löytyvät täältä https://www.php.net/manual/en/regexp.reference.
Aihe on jo aika vanha, joten et voi enää vastata siihen.