Jump to content
php.lv forumi

Regular Expressions


Gacha

Recommended Posts

Nu lieta tāda, ka gribu pārbaudīt ievadlauku, ka tiek lietoti, tikai burti. Ne regexiem ļoti maz ko saprotu, tapēc nevaru šito atrisināt :)

 

Šitais neder:

preg_match("#^([a-zA-Z]+)$#", 'TEXTS')

jo ja lieto ĀĒŪ tad atgriež FALSE. Izdomāju, ka vajag uztaisīt tādu izteiksmi, kas atļauj visu izņemot ciparus un simbolus. Izmeklējos google, bet netardu tādu un pagaidam nezinu tik daudz, lai pats tadu izveidotu.

Varbūt kāds var izpalīdzēt, bet lūdzu paskaidrojiet, kā tas viss notiek :)

Link to comment
Share on other sites

Diemžēl šis arī neder, ja lieto ĀĒūķļ:

<?php
$data = 'ĀĀŠŠŠŠĒĒĒ';
if(preg_match("/^(\w+)$/", $data)){
echo 'Der mums shis: '.$data;
}else{
echo 'Neder mums shis: '.$data;
}
?>

Atgriež FALSE

Link to comment
Share on other sites

AR charsetiem viss tagad ir ok gan hederi, gan failā!

<?php
header('Content-Type: text/html; charset=UTF-8');
$data = 'aaaaā';
if(preg_match("/^(\w+)$/", $data)){
echo 'Der mums shis: '.$data;
}else{
echo 'Neder mums shis: '.$data;
}
?>

Bet tiko kad ielieku ā vai kādu tamlīdzīgu, tad ie FALSE.

 

Bik paskatijos un pagaidām esmu nonācis līdz šim:

<?php
header('Content-Type: text/html; charset=UTF-8');
$data = 'aa 0aĒaā';
if(!ereg("/^[[:punct:]]|[[:digit:]]|[[:space:]]+$/", $data)){
echo 'Der mums shis: '.$data;
}else{
echo 'Neder mums shis: '.$data;
}
?>

Lieta tāda, ka šis aptuveni strādā, bet nez kapēc tas atļauj arī "space". Vēl vajadzētu aizliegt visus šitos, bet tas man neizdodas !@#$%^&*()_-+=><~`,.?/\|[]{}

 

EDIT: Venom tavejo vel nepaspeju izlasit, japamēģina!

Edited by Gacha
Link to comment
Share on other sites

Beigu beigās esmu ticis pie šādas izteiksmes:

ereg("[0-9!@#\$%\^&\*\(\)_\+=-\/\.\\\?\|\[{}><~`,|[:space:]]", $data)

Te man nepatīk 2 liets, 1. ka nez kapēc neatļauj lielos burtus un 2. ka ] var lietot, nesanāca man to tur ielikt. Var kāds papildināt vai palabot šo izteiksmi?

Link to comment
Share on other sites

1) es visu regexu rakstītu šādi: ereg("(...)")

2) kur katru "slikto" simbolu atdalītu ar or: |

3) meta-rakstzīmēm iekš ereg cik zinu vajag divus backslash

4) tas, cik tur ir vai nav tukšumu, pārbaudītu jau ar preg_match, kur noderēt varētu \s vai \S

Edited by Analgiins
Link to comment
Share on other sites

Tad nu beigās arī izdevās:

preg_match("/[0-9~!@#\$%\^&\*\(\)\-_\+=\{\}\[\];:\'\"\\\|><,\.\/\?\\s\\n\\r\\t]/", $data)

 

Šis strādā un ir tas kas bija vajadzīgs, prieks, ka tagad ir kāda sajēga no regexiem :)

Link to comment
Share on other sites

×
×
  • Create New...