Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Preg_match

Thalassa [27.12.2013 20:17:07]

#

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.

feenix [27.12.2013 20:49:37]

#

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.

p99o [27.12.2013 20:52:28]

#

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.

Metabolix [28.12.2013 10:18:43]

#

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}");
}

Hennkka [28.12.2013 11:28:27]

#

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.unicode.php

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta