๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑
WEBTOOLS FORUM - RECOMMENDED SETTINGS/SETARI RECOMANDATE: BROWSER=MOZILLA FIREFOX OR IE REZOLUTION=1280x1024| FORUMUL ESTE IN PLINA DEZVOLTARE VA RUGAM SA NE AJUTATI! ► DATA INFIINTARII: 19-07-2008 ►
Lista Forumurilor Pe Tematici
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ | Inregistrare | Login

POZE ๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑

Nu sunteti logat.
Nou pe simpatie:
princess79 pe Simpatie.ro
Femeie
25 ani
Bucuresti
cauta Barbat
25 - 60 ani
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ / » TURORIALE PHP « / Funcţii PHP pentru expresii regulate Moderat de AndreyNek, MadaLino
Autor
Mesaj Pagini: 1
MadaLino
Moderator

Din: Hotel Paradis
Inregistrat: acum 17 ani
Postari: 240
Funcţie
   
Descriere
ereg    
execută o identificare cu o expresie regulată
ereg_replace    
înlocuieşte un sub-şir care corespunde unei expresii regulate
eregi    
execută o identificare cu o expresie regulată insensibilă la diferenţa între majuscule şi minuscule
eregi_replace    
înlocuieşte un sub-şir care corespunde unei expresii regulate insensibile la diferenţa între majuscule şi minuscule
split    
divide un şir într-un tablou folosind o expresie regulată
spliti    
divide un şir într-un tablou folosind o expresie regulată (insensibilă la diferenţa între majuscule şi minuscule)
sql_regcase    
crează o expresie regulată insensibilă la diferenţa între majuscule şi minuscule dintr-un şir care conţine o expresie regulată.


Sintaxa:

function ereg


Semnificaţia caracterelor ce se pot afla în şablon:

^ - Început de şir
$ - Sfârşit de şir
* - zero sau mai multe caractere
+ - unul sau mai multe caractere
? - zero sau un character
{x,y}, unde x şi y sunt doi întregi reprezentând limita inferioară şi superioară a numărului de caractere necesare. x trebuie întotdeauna definit.
( ) - Secvenţe de caractere
| - operatorul SI (OR)
. (punct) - reprezintă orice caracter
[ ] - orice caracter din intervalul specificat
^ în [ ] - orice altceva decât caracterele din interval
^.[$()|*+?{\ - nu trebuiesc precedate de backslash (\) în expresii regulate dacă sunt în interiorul parantezelor pătrate [ ]


Exemple:

ab* - "a","ab","abb","abbb", etc.
ab+ - "ab","abb","abbb", etc.
ab? - doar "a","ab"
ab{2} - doar "abb"
ab{2,} - "abb","abbb", "abbbb", etc.
ab{2,4} - doar "abb","abbb", "abbbb"
a(bc)* - "abc","abcbc","abcbcbc", etc.
a(bc){1,3} - doar "abc","abcbc","abcbcbc"
(a|b) - "a" sau "b"
hi|hello - "hi" sau "hello"
(b|cd)ef - "bef" sau "cdef"
"^.{3}$" - orice şir cu exact 3 caractere
[_a-zA-Z] - underscore sau orice literă din alfabetul latin
[^a-zA-Z] - orice altceva înafară de litere
[1-6] - număr cuprins între 1 şi 6
[c-h] - minuscul cuprins între c şi h
[D-M] - majusculă cuprinsa între D şi M


Un exemplu mai complicat:

^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$

Exemplul de mai sus se traduce prin:

Un şir care începe cu oricare 2 caractere... ^.{2}
urmat de 1 sau 2 litere minuscule... [a-z]{1,2}
urmat de un underscore opţional... _?
urmat de zero sau mai multe cifre... [0-9]
urmat de fie un număr între 1 şi 6 sau o literă minusculă cuprinsă între a şi f... *([1-6]|[a-f])
urmat de 2 caractere care nu sunt cifre... [^1-9]{2}
urmat de unul sau mai multe litere "a" la sfârşitul şirului... a+$


Echivalenţe:

* - {0,}
+ - {1,}
? - {0,1}

Forma simplă a funcţiei ereg() preia două argumente: un şir care conţine o expresie regulată şi un şir subiect. Funcţia returnează true dacă expresia regulată corespunde unui sub-şir al şirului subiect; în caz contrar, returnează false.
Iată un exemplu mai simplu:

$model="[sml]at";
$subiect="La noi in sat";
$rezultat=ereg($model, $subiect);

Variabila $rezultat primeşte valoarea true, deoarece şirul subiect conţine sub-şirul "sat", care corespunde expresiei regulate.
Forma mai complexă a funcţiei ereg() include un al treilea argument, un tablou care primeşte sub-şiruri ce corespund porţiunilor scrise între paranteze ale modelului. În scriptul de mai jos, este reprezentat modul de utilizare a acestei forme a funcţiei ereg(), pe care o foloseşte pentru a determina dacă un şir conţine o adresă de e-mail corect formată.

Cod:

// formularul html
<form method="post" action="script_2.php">
Sir:
<input type="text" name="sir">
<br>
Expresie regulata:
<input type="text" size=64 name="model"
value="^([_a-zA-Z0-9-]+)@([a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*)$">
<br>
<input type="submit">
</form>

<?php
// preluare valori din formular
$sir = $_POST['sir'];
$model = $_POST['model'];
// Afisare date
echo "<br>Sir: ".$sir;
echo "<br>Expresie regulata: ".$model;
// verificare
if (get_magic_quotes_gpc())
    {
    echo "<br>Eliminarea ghilimelelor magice";
    $sir = stripslashes($sir);
    $model = stripslashes($model);
    echo "<br>Sir: ".$sir;
    echo "<br>Expresie regulata: ".$model;
    }
$gasit = ereg($model, $sir, $echivalente);
echo "<br>";
if ($gasit)
    {
    echo "<br>Valabil: true";
    echo "<br>Componente: ";
    for ($i=0;$i<count($echivalente);$i++)
        {
        echo "<br>$echivalente[$i]";
        }
    }
else
    echo "<br>Valabil: false";
?>


Funcţia PHP sscanf(), adăugată în versiunea PHP 4.01, este complementară funcţiei printf(). Dacă funcţia printf() generează date de ieşire formatate, funcţia sscanf() citeşte un şir, îl interpretează prin referirea la un şir de formatare şi stabileşte valorile variabilelor specificate în funcţie de conţinutul şirului.
Exemplu:


Cod:

<?php
$subiect = "01, 31, 2005";
$n = sscanf($subiect, "%d, %d, %d", &$luna, &$zi, &$an);
echo "<br>Au fost gasite $n valori:";
echo "<br>luna=$luna";
echo "<br>zi=$zi";
echo "<br>an=$an";
?>


Datele de ieşire ale acestui exemplu sunt:


Citat:

Au fost gasite 3 valori:
luna=1
zi=31
an=2005


_______________________________________


" Cui nu-i place cum gandesc multa    ii doresc ! "



pus acum 17 ani
   
Pagini: 1  

Mergi la