Autor Zpráva
Kyle
Profil
Zdravím, mám podmínku

if (!eregi ("^[a-zA-Z0-9[:space:]]{3,15}$", $_POST['xxx']))
 echo 'error';
else
 echo $_POST['xxx'];


dotaz zní: jak zajistit puštění max. jedné mezery?
tzn. teď jde -> text1 text2 text3
já chci max. -> text1 text2

dá se to?!

Díky za nápady na pomoc :)
peta
Profil
^ - zacatek retezce
[a-zA-Z0-9[:space:]] - seznam znaku
{3,15} - 3,15 znaku
$ - konec retezce

jinymi slovy prestavet cely regularni vyraz tak, ale uprostred byla mezera a vse ostatni se zdvoji.
[a-zA-Z0-9] {3,15} - seznam znaku
[:space:]{0,1} - mezera
[a-zA-Z0-9] {3,15} - seznam znaku
A asi to budes chtit jinak, viz
http://www.volny.cz/peter.mlich/www.htm#mssub19
bukaj
Profil
Kyle
Jak již psal peta, regulární výraz by mohl vypadat "^[a-zA-Z0-9]{3,15} ?[a-zA-Z0-9]{3,15}$". Ale jelikož by výraz obstál i pro 31znakový řetězec (s jednou mezerou, 30 znaků bez mezery), bude to chtít ještě doplnit o strlen().

Doporučuji však používat PCRE - jsou mnohem rychlejší a mocnější. Jediná změna u nich je, krom jiných názvů fcí, používání delimiterů (vhodný český název nemohu najít) a modifikátorů. Vše je samozřejmě v manuálu.

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