Potřeboval bych udělat proměnnou která by obsahovala všechny tvary a obměny slova ADMIN, např. AdMIN, aDMIN, "ADMIN " atd...(i osetrit mezery za nickem) jde o chraneni jmena v guestbooku...
driv jsem to resil
if($nick=="admin" || $nick=="admin " || $nick==" admin" || $nick=="Admin" atd....) {}
ale je to dost slozity kdyz mam chranit vic jmen..:) neni na to nejaka funkce?
http://cz.php.net/manual/cs/function.eregi.php
if (eregi("tvuj_nick", $nick)) echo "nick zneuzit!";
Na velikosti pismen nezalezi.
stripos() - je rychlejší, když nepotřebuješ regulární výraz, i vhodnější.
no jo, ale este najprv konvertovat vsetky znaky na velke,alebo male,potom bude jedno ci je to aDmin alebo ADMIN(finkcia strtoupper, alebo strtolower), aksom to spravne pochopil :)
co vlastne stripos() vykononava.....
V pripade Guesta je nejjednodussi eregi().
proč jako?
eregi('tvuj_nick', $nick)
vraci to samy, co
stripos($nick,'tvuj_nick')
a teoreticky to je i rychlejší
milster: rychlejsi je to i prakticky
manual vylozene rika ze pokud nepotrebujes reg. vyrazy tak mas pouzit str... funkce
<HTML>kdyz uz stripos tak takhle:
stripos(trim($nick),'tvuj_nick')</HTML>
Ak som spravne pochopil potrebujes aby sa v slove nicku pre uzivatelov vobec nevyskytovalo slovo admin a takisto aby medzi jednotlivymi pismenami tohoto slova nemohli byt medzeri pripadne ine znaky.
Moje riesenie je trochu komplikovanejsie, ale zato ucinne filtruje vsetky pripadne znaky medzi pismenami admin.Takisto je uplne jedno, aky bude pocet tychto "zakazanych znakov".Tu je riesenie:
$tvoj_nick="blblA...d.. . .M i.nblao"; /* aj tu najde admin medzi jednotlivymi pismenami sa nemoze vyskytnut ani bodka ani medzera, pripadne si funkciou str_replace mozes nadefinovat viac "nepovolenych" znakov medzi pismenami admin.....*/
$a=strtoupper($tvoj_nick); // zmeni vsetky pismena na velke.
$a=str_replace(" ","",$a); // vyhodi vsetky medzeri
$a=str_replace(".","",$a); // vyhodi vsetky bodky a mozno doplnit aj ine znaky
$pos = strpos($a,"ADMIN"); // a az teraz skontroluje cez strpos meno admin...
if ($pos===false) { echo "Povoleny Nick.";exit;}
else echo "Nepovoleny nick...."; // a vyhodnoti podmienku...
Mohol by som pouzit funkciu stripos, ale bohuzial ta funguje az od PHP verzie 5.0 ako som sa dozvedel.
Milster: Protoze stripos() je az od PHP 5. Ostatni moznosti jsou slozitejsi.
Rasto:
Misto
$a=strtoupper($tvoj_nick); // zmeni vsetky pismena na velke.
$a=str_replace(" ","",$a); // vyhodi vsetky medzeri
$a=str_replace(".","",$a); // vyhodi vsetky bodky a mozno doplnit aj ine znaky
$pos = strpos($a,"ADMIN"); // a az teraz skontroluje cez strpos meno admin...
staci
$pos = eregi('ADMIN', $nick)
strpos(strtoupper($a),'ADMIN');
"rychlejsi je to i prakticky"
Teoreticky jsem napsal úmyslně - při jednom volání funkce je rozdíl zanedbatelnej ;)
<HTML>mezi nami devcaty.. ja bych pouzil take bud eregi nebo preg_match s modiferem /i nicmene drzel jsem se manualu kde vazne strpos podporucuji</HTML>
stripos() pro PHP4 viz milster.
Ono když se zamyslíte, co všehcno musí podniknout takový regulární výraz, oproti prostému vyhledání pozice textu, tak je to myslím jasné. A je to freehosting, buďte na něj hodní.