PDA

Pogčedajte punu verziju : regex i nasa slova


ludakbre
11. 04. 2008., 06:31
treba mi pomoc....nisam uspeo da nadjem na forumu.... sorry ako je vec bilo


$patternnaziv = '/^[a-zA-Z0-9 &#!!262;&#!!263;&#!!268;&#!!269;&#!!272;&#!!273;&#!!352;&#!!353;&#!!381;&#!!382; _.-]{5,40}$/';
if(!preg_match($patternnaziv, $naziv)) {
$stanjegreska = 1;
$greska .= "Greška bla bla<br>";
}

Vazna napomena da kod &#!!262; treba izbaciti !! jer sam to morao ovde na forumu da stavim kako mi isti ne bi pretvorio te kodove u nasa slova...

e ovako... pokusavam da provucem i nasa slova.... medjutim
slova čćđ prolaze ali š i ž nece nikako...
osim toga... limitirao sam na duzinu od 5 do 40.
posto mi je slovo ć ovako &#!!267; (isto treba izbaciti !!) zauzme mi ni manje ni vise nego 6 mesta... 6*7 i probijam limit ?!

kako napisati slova šž velika i mala i kako da mi ne pojede prostor ?
osim toga probao sam i &scaron; i slicno ali ne pije vodu :(

dinke
11. 04. 2008., 10:15
Probaj nesto tipa:


$found = preg_match("/[a-zA-Z0-9\pL/"u, $naziv);


Kljucna fora je ovo \pL. Pogledaj manual (http://www.php.net/manual/en/regexp.reference.php) za vise informacija.

ludakbre
11. 04. 2008., 18:22
uh probao sam i dobijam gresku

Warning: Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 11 in

hmm pa kako vi kontrolisete unos sa forme ? trebaju mi mala velika slova space, crtica i takve zezancije....
ako ostavim
'/^[a-zA-Z0-9 _.-]{5,40}$/'
to je ok, ali ako korisnik unese neko nase slovo cao zdravo...

gledao sam manual i pre ovog posta ali se nisam snasao.... i nemam puno iskustva sa regex pa rekoh da pitam i da ne lupam vise glavu. Cenim da je ovo morao neko raditi, ako se ne radi i svaki put kada se unose karakteri u formu a apliakcija je za nase govorno podrucje..
unapred hvala

dinke
11. 04. 2008., 19:06
Sorry, ovo u ide odmah posle /, sledeci put stavljam copy/paste direktno iz mog koda :)

Dakle, treba ovako:


$found = preg_match("/[a-zA-Z0-9\pL/u", $naziv);

ludakbre
11. 04. 2008., 19:31
jesi li siguran da je tako ?! :)
mislim da fali zagrada ]
$found = preg_match("/[a-zA-Z0-9\pL/u", $naziv);
$found = preg_match("/[a-zA-Z0-9]\pL/u", $naziv);

imam problem... na localhostu ovo ne radi.....
Warning: Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 12 in
koja je zahtevnost php-a za ovaj kod ?

na serveru
$naziv = "šđčćž";
$found = preg_match("/[a-zA-Z0-9]\pL/u", $naziv);
echo $found;

dobijam 0 ?! znaci da nije nasao ?!

hvala puno za trud :)

dinke
11. 04. 2008., 20:04
<?php
$naziv = "šđčćž";
$found = preg_match("/[a-zA-Z0-9\pL]/u", $naziv);
echo $found;
?>

japan
11. 04. 2008., 20:14
koja je zahtevnost php-a za ovaj kod ?




. If you want to make use of the support for UTF-8 character strings in PCRE,
you must add --enable-utf8 to the "configure" command. Without it, the code
for handling UTF-8 is not included in the library. (Even when included, it
still has to be enabled by an option at run time.)

. If, in addition to support for UTF-8 character strings, you want to include
support for the \P, \p, and \X sequences that recognize Unicode character
properties, you must add --enable-unicode-properties to the "configure"
command. This adds about 30K to the size of the library (in the form of a
property table); only the basic two-letter properties such as Lu are
supported.


http://www.pcre.org/readme.txt

ludakbre
11. 04. 2008., 21:14
@dinke
da ovo valja :) txn
@japan
hvala, ali ako mozes malo preciznije
gde se dodaje --enable-utf8 ?
"configure" command. sta mu to dodje.... nisam bas iskusan...
koristim easyphp
da li to trebam negde u podesavanjima php-a apacha ili nesto trece ?!
tnx

japan
11. 04. 2008., 21:51
parametar pri kompaljiranju, ali ako ti ovo gore radi, onda ti nije bitno...

ludakbre
12. 04. 2008., 01:39
@japan
pa na serveru radi. ocito je podeseno kako treba, ali na localhostu nece :(
jako bi mi znacilo kada bih mogao na localhostu to da izvodim jer imam jos dosta da poradim, a nemoguca je misija da kada nesto izmenim vrsim upload na server pa da testiram....

cinimi se da sam jako blizu resenju, te molim za jos malu pomoc :)
kako ovo izvesti u localhost ? nazalost nikad nisam radio te parametre pri kompajliranju.. sve sto sam do sada radio jeste napisem nesto i pokrecem preko servera na localhostu (cenim da se tu i odradi kompajliranje)

hvala puno

@dinke
a kako da ogranicim unos na duzinu od 5 do 40 karaktera recimo ?!

tnx

dinke
12. 04. 2008., 02:01
$found = preg_match("/[a-zA-Z0-9\pL]{5,40}/u", $naziv);

P.S. Pretrazi malo forum, bilo je dosta tekstova oko regexp-a kao i saveta gde se mogu bolje nauciti.

ludakbre
12. 04. 2008., 02:32
neverovatno
ovaj kod

<?php
$naziv = "ššššš";
$found = preg_match("/[a-zA-Z0-9\pL]{5,40}/u", $naziv);
echo $found;
?>

na serveru radi i vraca lepo 1.
a ovaj
$patternnaziv = "/[a-zA-Z0-9\pL]{5,40}/u";
if(!preg_match($patternnaziv, $nazivfirme)) {
$stanjegreska = 1;
$greska .= "Greška u polju naziv firme<br>";
}

nece ?!
jedina razlika je sto nazivfirme primi preko post metode.
kada uradim ovako nesto
$nazivfirme = "ššššš";
$patternnaziv = "/[a-zA-Z0-9\pL]{5,40}/u";
if(!preg_match($patternnaziv, $nazivfirme)) {
$stanjegreska = 1;
$greska .= "Greška u polju naziv firme<br>";
}
onda to lepo radi ?! znaci greska se dogodi kod slova š i ž ?! :1041:
čćđ lepo odradi...... sta ciniti sad ?

@dinke
nije da nisam trazio, ali u ovome sam stvarno totalni pocetnik i muku mucim da razumem ovo... pa i tvoj kod sa malom greskom nisam ustanovio gresku, a zamisli kako se snalazim u nekim drugim temama ?! :)
u svakom slucaju izvini na cimanju i puno hvala i za ovoliko :)

uhhh evo resio sam problem sa šž.
html strana nije bila utf8 a razlog tome je sto sam nasledio vec zapoceto (to najvise mrzim) i taj neko nije to uradio kako treba i ja se ubih sad zbog njega....
momci hvala puno ! ! !