Man regcomp(3): funcții de expresie regulată POSIX. Descărcați Reg Organizer - curățarea și optimizarea sistemului Nelimitat reg comp php

Acest ghid de instalare vă va ajuta să instalați și să configurați PHP3 pe serverele dvs. web Windows 9x/NT. Acest manual compilat de Bob Silva. Ultima versiune poate fi găsit la http://www.umesd.k12.or.us/php/win32install.html.

Acest ghid oferă suport pentru instalare pe:

Server web personal (recomandat cea mai nouă versiune)
Internet Information Server 3 sau 4
Apache 1.3.x
Omni HTTPd 2.0b1
Modificarea configurației pentru PHP3:

Toate modulele încep acum cu prefixul „php3_”. Trebuie să vă schimbați fișierul php3.ini și/sau toate scripturile de încărcare a extensiilor cu această funcție dl()(sau eliminați prefixul „php3_” peste tot). Acest lucru va preveni confuzia între module PHPși bibliotecile lor de sprijin.

Jurnalul de modificări, Întrebările frecvente și documentația actualizată pot fi întotdeauna găsite pe site-ul oficial PHP sau în oricare dintre oglinzile sale.

Etapele de bază ale instalării:

Acești pași trebuie finalizați la orice instalare înainte de instrucțiuni specifice serverului:

    Despachetați fișierul de distribuție într-un director la alegere.

    O opțiune bună ar fi „C:\PHP3\”.

    Copiați fișierul „php3-dist.ini” în directorul „%WINDOWS%” și redenumiți-l „php3.ini”.
    Directorul tău „%WINDOWS%” este de obicei:
  • c:\windows pentru Windows 95/98

    • c:\winnt sau c:\winnt40 pentru serverele NT

      Editați fișierul „php3.ini”:

      va trebui să schimbați „extension_dir” la calea către directorul dumneavoastră de instalare PHP sau unde ați plasat fișierele „php3_*.dll” (de exemplu c:\php3); setați „doc_root” la calea unde se află document_root al serverului web (de exemplu c:\apache\htdocs sau c:\webroot); selectați ce module doriți să încărcați când PHP pornește. Puteți decomenta liniile „extension=php3_*.dll” pentru a încărca modulele corespunzătoare. Unele module necesită instalare suplimentară

      unele biblioteci în sistem pentru o funcționare corectă. Consultați FAQ PHP pentru mai multe informații despre unde puteți obține biblioteci de asistență. Informații suplimentare Pentru informații despre utilizarea browscap în PHP, accesați mirror , selectați butonul „sursă” pentru a-l vedea în acțiune;

Windows 95/98/NT și PWS/IIS 3:

Metoda recomandată pentru configurarea acestor servere este utilizarea fișierelor INF furnizate împreună cu distribuția (php_iis_reg.inf). Puteți edita acest fișier și vă asigurați că extensiile și directorul de instalare PHP corespund setărilor dvs. Sau puteți urma pașii enumerați mai jos pentru a o face manual.

AVERTISMENT: Acești pași includ munca directă cu registru Windows. Vă recomandăm cu tărie să faceți mai întâi copie de rezervă

    registru. Echipa de dezvoltare PHP nu este responsabilă dacă vă deteriorați registrul.

    Lansați Regedit;
    Navigați la: HKEY_LOCAL_MACHINE /System/CurrentControlSet/Services

    /W3Svc /Parameters/ScriptMap .

    Din meniul de editare, selectați Nou->Valoare șir.

    Determinați extensia pe care doriți să o utilizați pentru scripturile dvs. PHP (ex. php3). Faceți dublu clic pe valoare linie nouă

    și introduceți calea către php.exe exe în câmpul de date (de exemplu c:\php3\php.exe %s %s). „%s %s” sunt FOARTE importante, PHP nu va funcționa corect fără el;

    Repetați acești pași pentru fiecare extensie pe care doriți să o asociați cu scripturile PHP;

    Acum mergeți la HKEY_CLASSES_ROOT;

    Din meniul de editare selectați New->Key ;

    Determinați cheia extensiei pe care ați instalat-o în secțiunea anterioară (de exemplu.php3

    Selectați noua cheie, faceți dublu clic pe „valoarea implicită” în partea dreaptă a ferestrei și introduceți fișierul php.

    Repetați ultimul pas pentru fiecare extensie instalată în secțiunea anterioară;

    Acum creați un alt New->Key sub HKEY_CLASSES_ROOT și acesta este numele fișierului php.

    Evidențiați noua cheie phpfile phpfile și, în partea dreaptă a ferestrei, faceți dublu clic pe „valoare implicită” și introduceți Scriptul PHP.

    Faceți clic dreapta pe phpfile și selectați New->Key, acesta este numele Shell.

    Faceți clic dreapta pe Shell și selectați New->Key, acest nume este deschis.

    Faceți clic dreapta pe deschidere și selectați New->Key, acest nume este comandă.

    Selectați noua cheie de comandă și, în partea dreaptă a ferestrei, faceți dublu clic pe „valoare implicită” și introduceți calea către php.exe. De exemplu: c:\php3\php.exe -q %1 . (nu uitați de %1).

Părăsiți Regedit;

Utilizatorii PWS și IIS 3 au acum un sistem complet funcțional.

Pentru a instala PHP3 pe un server NT care rulează IIS4, urmați aceste instrucțiuni:

    ÎN Serviciu de internet Manager (MMC) selectează site-ul Web sau directorul principal al aplicației;

    Deschideți meniul de proprietăți ale directorului (clic dreapta și selectați proprietăți) și apoi faceți clic pe Director principal, Director virtual sau fila Director;

    Faceți clic pe butonul Configurare și apoi selectați fila Mapări aplicații;

    Faceți clic pe Adăugare, în cadrul Executable tip c:\path-to-php-dir\php.exe %s %s .

    TREBUIE să încheiați %s cu %s, PHP nu va funcționa corect dacă nu o faceți;

    În caseta Extensie, specificați extensia de fișier pe care doriți să o asociați cu scripturile PHP (de obicei (.php3 și .phtml); Setați securitatea necesară (acest lucru se face în Internet Service Manager) și, dacă folosește serverul dvs. NT sistem de fișiere

NTFS, adăugați permisiuni de execuție în directorul I_USR_, care conține php.exe .

Windows 9x/NT și Apache 1.3.x

Trebuie să editați fișierul srm.conf sau httpd.conf pentru a configura Apache să funcționeze cu executabile PHP CGI.

    Deși pot exista mai multe opțiuni pentru configurarea PHP sub Apache, este destul de simplu chiar și pentru un începător. Vă rugăm să consultați documentația Apache pentru informații despre directivele de configurare.

    ScriptAlias ​​​​/php3/"c:/path-to-php-dir/php.exe"

    Aplicația AddType/x-httpd-php3 .php3

    Aplicație AddType/x-httpd-php3 .phtml

Aplicație de acțiune/x-httpd-php3 „php3/php.exe” Pentru a activa utilizarea text sursă , trebuie doar să creați un fișier script PHP și să lipiți acest cod în: . Înlocuiți original_php_script.php3 php3 cu numele fișierului sursă dorit (aceasta este doar una dintre căi). Vă rugăm să rețineți

că pe Win-Apache toate barele oblice inverse dintr-o cale de propoziție, cum ar fi „c:\directory\file.ext” ar trebui înlocuite cu barele oblice înainte.

Omni HTTPd 2.0b1 pentru Windows

Această configurație ar trebui să fie cea mai simplă:

Repetați pașii 2 - 6 pentru fiecare extensie pe care doriți să o asociați cu PHP.

module PHP:

Tabelul 3-1. module PHP php3_calendar.dll
Funcții de conversie a calendarului php3_crypt.dll
Funcții de criptare php3_dbase.dll
Funcții baze de date php3_dbm.dll
Emulare GDBM folosind biblioteca Berkely DB2 php3_filepro.dll
acces NUMAI CITIRE la bazele de date filepro php3_gd.dll
Biblioteca de funcții GD pentru manipularea gif php3_hyperwave.dll
Caracteristici HyperWave php3_imap4r2.dll
Caracteristici IMAP 4 php3_ldap.dll
Caracteristici LDAP php3_msql1.dll
Client mSQL 1 php3_msql2.dll
Client mSQL 2 Client MSSQL (necesită MSSQL DB-Libraries)
php3_mysql.dll Funcții MySQL
php3_nsmail.dll Caracteristici de e-mail Netscape
php3_oci73.dll Funcții Oracle
php3_snmp.dll Funcții SNMP (numai NT!)
php3_zlib.dll Funcții ZLib

În primul rând, vom îmbunătăți pagina de înregistrare adăugând posibilitatea de a încărca un avatar. Imaginea sursă trebuie să fie în format jpg, gif sau png. De asemenea, ar trebui să nu depășească 2 MB. Nu vă faceți griji, după ce este comprimat de script, dimensiunea avatarului va fi de aproximativ 3 kb și format jpg. Deschide pagina reg.phpși adăugați-l în etichetă < formă> linia enctype="multipart/form-data", ca în exemplu:


Înregistrare










Acum să economisim reg.php

2. Apoi trebuie să creați un alt câmp în tabel utilizatorii. Să mergem la phpmyadmin, selectați baza de date și tabelul dorite.


Setăm toate valorile ca în figură:

Calea către avatar va fi înregistrată în acest câmp și va fi salvată în folder separat, să-i spunem „avataruri”. Dosarul va fi localizat în același director ca și restul fișierelor script.

3. Accesați fișierul salva_ utilizator. phpși adăugați următorul cod după eliminarea spațiilor din autentificare și parolă:

//eliminați spațiile suplimentare
$login = trim($login);

// adăugați noi ********************************************

//adăugați o verificare pentru lungimea login-ului și a parolei
if (strlen($login)< 3 or strlen($login) > 15) {
exit(„Autentificarea trebuie să conțină cel puțin 3 caractere și nu mai mult de 15.”);
}
dacă (strlen($parolă)< 3 or strlen($password) > 15) {
exit(„Parola trebuie să aibă cel puțin 3 caractere și nu mai mult de 15.”);
}

if (!empty($_POST["fupload"])) //verificați dacă utilizatorul a trimis imaginea
{
$fupload=$_POST["fupload"]; $fupload = trim($fupload);
dacă ($fupload =="" sau gol ($fupload)) (
unset($fupload);// dacă variabila $fupload este goală, atunci ștergeți-o
}
}
dacă (!isset($fupload) sau empty($fupload) sau $fupload =="")
{
//dacă variabila nu există (utilizatorul nu a trimis o imagine), atunci atribuiți-i o imagine pre-preparată cu inscripția „fără avatar”
$avatar = "avatars/net-avatara.jpg"; //puteți desena net-avatara.jpg sau îl puteți lua de la sursă
}
altfel
{
//în caz contrar - încarcă imaginea utilizatorului
$path_to_90_directory = "avatars/";//folder unde se vor încărca imaginea inițială și copia sa comprimată

Dacă(preg_match("/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/",$_FILES["fupload"]["nume"])) //verificarea formatului imaginii sursă
{
$filename = $_FILES["fupload"]["nume"];
$sursa = $_FILES["fupload"]["tmp_name"];
$țintă = $cale_la_director_90 . $nume fișier;
move_uploaded_file($sursă, $țintă);//încărcarea originalului în folderul $path_to_90_directory
if(preg_match("/[.](GIF)|(gif)$/", $nume fișier)) (
$im = imagecreatefromgif($calea_la_directorul_90.$nume fișier) ; //dacă originalul era în format gif, atunci creați o imagine în același format. Necesar pentru compresia ulterioară
}
if(preg_match("/[.](PNG)|(png)$/", $nume fișier)) (
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//dacă originalul era în format png, atunci creați imaginea în același format. Necesar pentru compresia ulterioară
}

Dacă(preg_match("/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/", $nume fișier)) (
$im = imagecreatefromjpeg($cale_la_director_90.$nume fisier); //dacă originalul era în format jpg, apoi creăm o imagine în același format. Necesar pentru compresia ulterioară
}
//CREAREA IMAGINII PĂTRATATE ȘI COMPRESIA ULTERIORĂ A EI LUAT DE PE SITE-UL www.codenet.ru
// Creați un pătrat de 90x90
// dest - imaginea rezultată
// w - lățimea imaginii
// raport - coeficient de proporționalitate
$w = 90; // pătrat 90x90. Poate fi furnizat și în alte dimensiuni.
// creează imaginea originală pe baza
// fișierul sursă și stabiliți dimensiunea acestuia
$w_src = imaginix($im); //calculați lățimea
$h_src = imagesy($im); //calculeaza inaltimea imaginii
// creează o imagine pătrată goală
// truecolor este important!, altfel vom avea un rezultat de 8 biți
$dest = imaginecreatetruecolor($w,$w);
// decupați centrul pătratului de-a lungul x dacă fotografia este orizontală
dacă ($w_src>$h_src)
imagecopyresamped($dest, $im, 0, 0,
rotund((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// decupați vârful pătrat de-a lungul y,
// dacă fotografia este verticală (deși puteți folosi și mijlocul)
dacă ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));
// imaginea pătrată este scalată fără tăiere
dacă ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$data=ora(); //calculează ora curentă.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//salvați imaginea în format jpg în folderul dorit, numele va fi ora curentă. Creat pentru a preveni ca avatarurile să aibă aceleași nume.
//de ce jpg? Ocupă foarte puțin spațiu + animația imaginii GIF, care distrage atenția utilizatorului, este distrusă. Nu este foarte plăcut să-i citești comentariul când observi o mișcare cu coada ochiului.
$avatar = $path_to_90_directory.$date.".jpg";//puneți calea către avatar în variabilă.
$delfull = $cale_la_director_90.$nume fisier;
deconectați ($delfull);//ștergeți imaginea originală încărcată, nu mai avem nevoie de ea. Sarcina a fost de a obține o miniatură.
}
altfel
{
//în cazul nepotrivirii formatului, emite un mesaj corespunzător
exit("Avatarul trebuie să fie în formatul JPG, GIF sau PNG");
}
//sfârșitul procesului de încărcare și atribuirea variabilei $avatar a adresei ava încărcate
}



// a adăugat nou ************************************************ **
// Urmează totul din prima parte a articolului, dar trebuie să adăugați o modificare la interogarea bazei de date.
//conectează-te la baza de date
// verifică existența unui utilizator cu aceeași autentificare
$rezultat = mysql_query("SELECT ID FROM utilizatorii WHERE login="$login"",$db);
dacă (!empty($myrow["id"])) (
exit("Ne pare rău, datele de conectare introduse sunt deja înregistrate. Vă rugăm să introduceți o altă autentificare.");
}
// dacă nu este cazul, atunci salvați datele
$result2 = mysql_query("INSERT INTO users (login,parola,avatar) VALUES("$login","$parola","$avatar")");
// Verificați dacă există erori
dacă ($result2=="TRUE")
{
echo "Te-ai inregistrat cu succes! Acum poti intra pe site. Pagina de pornire";
}
altfel(
echo „Eroare! Nu sunteți înregistrat.”;
}
?>

4. Trebuie să adăugați un tabel la aceeași bază de date. Va stoca adrese IP care au făcut erori la conectare. Astfel putem limita accesul celor care au greșit de mai mult de trei ori la rând timp de aproximativ 15 minute. Cred că programele care selectează parolele vor trebui să se schimbe mult timp.
Să mergem la phpmyadmin și să creăm un nou tabel cu 3 câmpuri:


ip - adresa IP.
data - data autentificării nereușite în ultimele 15 minute pentru utilizatorul cu acest ip. col - numărul de erori din ultimele 15 minute pentru utilizatorul cu acest ip.
Mare! Gata, acum să schimbăm fișierul de conectare și de verificare a parolei, pentru că acum parola noastră este criptată. Deschide testreg.php și șterge totul dincolo de eliminarea spațiilor din login și parolă. În continuare adăugăm următorul cod:

//eliminați spațiile suplimentare
$login = trim($login);
$parola = trim($parola);

// înlocuiți cu unul nou******************************************** ******
// se conectează la baza de date
include("bd.php");// fișierul bd.php trebuie să fie în același folder cu toate celelalte, dacă nu este, atunci doar schimbați calea
// mini-verificare pentru selectarea parolei
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (gol ($ip) || $ip=="necunoscut") ($ip=getenv("REMOTE_ADDR"); )//extract ip
mysql_query ("ȘTERGERE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(data) > 900");//ștergeți adresele IP ale utilizatorilor care au făcut o greșeală la conectare după 15 minute.
$result = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db // preia din baza de date numărul de încercări nereușite de conectare în ultimele 15 pentru un utilizator cu o anumită ip);
$myrow = mysql_fetch_array($rezultat);
dacă ($myrow["col"] > 2) (
//dacă există mai mult de două erori, adică trei, atunci emitem un mesaj.
exit("Ați introdus greșit numele de utilizator sau parola de 3 ori. Vă rugăm să așteptați 15 minute înainte de a încerca din nou.");
}
$parolă = md5($parolă);//criptați parola
$parolă = strrev($parolă);// pentru fiabilitate, adăugați invers
$parolă = $parolă."b3p6f";
//puteți adăuga câteva dintre propriile dvs. caractere după gust, de exemplu, introducând „b3p6f”. Dacă această parolă este piratată cu forța brută pe același server md5, atunci evident că nu va ieși nimic bun din ea. Dar te sfătuiesc să pui și alte personaje, poate la începutul rândului sau la mijloc.
//În acest caz, este necesar să măriți lungimea câmpului de parolă din baza de date. Parola criptată poate fi mult mai mare.

$rezultat = mysql_query("SELECT * FROM users WHERE login="$login" AND password="$parola"",$db); //preluați din baza de date toate datele despre utilizator cu autentificarea și parola introduse
$myrow = mysql_fetch_array($rezultat);
dacă (gol ($myrow["id"]))
{
//dacă utilizatorul cu autentificarea și parola introduse nu există
//Facem o înregistrare că acest ip nu s-a putut conecta.
$select = mysql_query("SELECT IP FROM oshibka WHERE ip="$ip"");
$tmp = mysql_fetch_row($select);
if ($ip == $tmp) (//verificați dacă utilizatorul se află în tabelul „oshibka”
$rezultat52 = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db);
$myrow52 = mysql_fetch_array($rezultat52);
$col = $myrow52 + 1;//adăugați încă o încercare de conectare nereușită
mysql_query("UPDATE error SET col=$col,date=NOW() WHERE ip="$ip"");
}
altfel(
mysql_query("INSERT INTO oshibka (ip,data,col) VALUES ("$ip",NOW(),"1")");
//dacă nu au existat erori în ultimele 15 minute, atunci introduceți noua intrare la masa „oshibka”.
}

exit(„Ne pare rău, numele de utilizator sau parola pe care le-ați introdus sunt incorecte.”);
}
altfel(
nbsp; //dacă parolele se potrivesc, atunci lansăm o sesiune pentru utilizator! Îl poți felicita, a intrat!
$_SESSION["parola"]=$myrow["parola"];
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//aceste date sunt folosite foarte des, astfel încât utilizatorul conectat le va „purta cu el”

//În continuare salvăm datele în cookie-uri pentru autentificarea ulterioară.
//ATENŢIE!!! FACEȚI ACEST LA DISCREȚIA DVS., deoarece DATELE SUNT STOCATE ÎN COOKIE-URI FĂRĂ CRIPTARE
dacă ($_POST[„salvare”] == 1) (
//Dacă utilizatorul dorește ca datele sale să fie salvate pentru autentificarea ulterioară, atunci le salvăm în cookie-urile browserului său
setcookie("login", $_POST["login"], time()+9999999);
setcookie("parolă", $_POST["parolă"], oră()+9999999);
}}
ecou" „;//redirecționăm utilizatorul către pagina principală, unde îl vom anunța de autentificare reușită
?>

5. Vom schimba complet pagina principală. Este necesar să afișați avatarul utilizatorului pe acesta, să afișați un link pentru a vă deconecta din cont și să adăugați o casetă de selectare pentru a vă aminti parola atunci când vă conectați.
Index.php

// întreaga procedură funcționează în sesiuni. Este locul în care sunt stocate datele utilizatorului în timp ce acesta se află pe site. Este foarte important să le lansăm chiar de la începutul paginii!!!
sesiune_start();
include("bd.php");// fișierul bd.php trebuie să fie în același folder cu toate celelalte, dacă nu este, atunci doar schimbați calea
dacă (!empty($_SESSION["login"]) și !empty($_SESSION["parolă"]))
{
//dacă există o autentificare și o parolă în sesiuni, atunci verificați-le și preluați avatarul
$login = $_SESSION["login"];
$parolă = $_SESSION[„parolă”];
$rezultat = mysql_query("SELECT id, avatar FROM utilizatorii WHERE login="$login" AND password="$parola"",$db);
$myrow = mysql_fetch_array($rezultat);
//extrage datele necesare utilizatorului
}
?>


Pagina de start


Pagina de start

dacă (!isset($myrow["avatar"]) sau $myrow["avatar"]="") (
//verifică dacă datele utilizatorului au fost extrase din baza de date. Dacă nu, atunci el nu este autentificat sau parola din sesiune este incorectă. Afișăm o fereastră de conectare. Dar nu o vom afișa pentru cei care intră, nu mai au nevoie.
imprimare<<


AICI;

Dacă (isset($_COOKIE["login"])) //există o variabilă cu autentificare în COOKIE. Ar trebui să fie dacă utilizatorul a făcut clic pe caseta de selectare „Ține-mă minte” în timpul conectării anterioare
{
//dacă da, atunci introduceți valoarea sa în formular. În acest caz, utilizatorului i se arată că autentificarea sa a fost deja introdusă în coloana necesară
echo " value="".$_COOKIE["login"]."">";
}

imprimare<<




AICI;

Dacă (isset($_COOKIE["parolă"]))//dacă există o variabilă cu o parolă în COOKIE. Ar trebui să fie dacă utilizatorul a făcut clic pe caseta de selectare „Ține-mă minte” în timpul conectării anterioare
{
//dacă da, atunci introduceți valoarea sa în formular. În acest caz, utilizatorului i se arată că parola sa a fost deja introdusă în coloana necesară
echo " value="".$_COOKIE["parolă"]."">";
}

Imprimare<<



Ține-mă minte.






Registru



Sunteți autentificat ca invitat

AICI;
}
altfel
{
//dacă autentificarea are succes, utilizatorului i se dă tot ce este mai jos între asteriscuri.

imprimare<<
Sunteți conectat pe site ca $_SESSION (ieșire)


Acest link este disponibil numai pentru utilizatorii înregistrați

Avatarul tău:




AICI;

//************************************************************************************
//dacă autentificarea este reușită, utilizatorului i se dă tot ce se află SUS între asteriscuri.
}
?>

6. Este necesar să se facă posibilă deconectarea utilizatorilor conectați. Pe pagina de start Exista deja un link către ieșire. Dar acest fișier nu există încă. Deci haideți să creăm fișier nou ieșire.php cu cod:

sesiune_start();
if (gol($_SESSION["login"]) sau gol($_SESSION["parolă"]))
{
//dacă nu există o sesiune cu autentificare și parolă, atunci acest fișier a fost accesat de un utilizator neconectat. El nu aparține aici. Emitem un mesaj de eroare și oprim scriptul
ieșire („Accesul la această pagină este permis numai utilizatorilor înregistrați. Dacă sunteți înregistrat, atunci conectați-vă la site folosind numele de utilizator și parola dvs.
Pagina de pornire");
}

unset($_SESSION["parolă"]);
unset($_SESSION["login"]);
unset($_SESSION["id"]);// distruge variabilele din sesiuni
Ieșire(" ");
// trimite utilizatorul la pagina principală.
?>

Ei bine, asta e! Bucură-te de el pentru sănătatea ta! Noroc!

Conţinut

ereg

ereg -- valoarea pereche a expresiei regulate
Descriere
int ereg (model de șir, șir de șir, matrice);

Caută valori împerecheate şirîn expresia regulată specificată în model .

Dacă valorile pereche sunt găsite pentru subșiruri în paranteze model iar funcția a fost apelată cu al treilea argument regs, apoi valorile împerecheate vor fi stocate în elemente regs. $regs va conține un subșir care începe cu prima paranteză din stânga; şir .

$regs va conține subșirul care începe cu a doua paranteză etc. $regs va conține o copie

Căutarea face distincție între majuscule și minuscule.

Funcția returnează true dacă o valoare potrivită pentru model a fost găsită în șir sau false dacă nu au fost găsite valori care se potrivesc sau a apărut o eroare. Următorul cod preia data în format ISO

și ieșiri în format ZZ.LL.AAAA:

Exemplul 1. exemplu ereg().

Dacă (ereg ("((4))-((1,2))-((1,2))", $date, $regs)) ( echo "$regs.$regs.$regs"; ) else ( echo „Format de dată nevalid: $date”; )

ereg_replace
Descriere
ereg_replace -- înlocuiește expresia regulată

șir ereg_replace(model șir, înlocuire șir, șir șir); şir Această funcție scanează model la valori pereche k , apoi înlocuiește textul găsit cu .

înlocuire model Dacă , apoi înlocuiește textul găsit cu conține subșiruri în paranteze, atunci poate conține subșiruri precum \\ număr

, care va fi înlocuit cu text care să corespundă subșirului numeric dintre paranteze; \\0 va procesa întregul conținut al șirului. Pot fi utilizate până la 9 subșiruri. Parantezele pot fi grupate, caz în care sunt numărate prin parantezele de deschidere. De exemplu, următorul cod va tipări „Acesta a fost un test” de trei ori:

$string = "Acesta este un test"; echo ereg_replace(" este", "a fost", $șir); echo ereg_replace ("()este", "\\1a fost", $șir); echo ereg_replace ("(()este)", "\\2a fost", $șir);

A se vedea, de asemenea, , și .

eregi

eregi -- căutare fără diferențe de majuscule pentru valori perechi în expresiile regulate
Descriere
int eregi (model de șir, șir de șir, matrice);

eregi_replace

eregi_replace -- înlocuire a expresiei regulate care nu ține seama de majuscule
Descriere
șir eregi_replace(model șir, înlocuire șir, șir șir);

Despică

split -- desparte un șir într-o matrice folosind o expresie regulată
Descriere
împărțire matrice (model șir, șir șir, int);

Returnează o matrice de șiruri, fiecare dintre acestea fiind un subșir al unui șir, format prin ruperea acelui șir în părți separate unul de celălalt model. Dacă apare o eroare, funcția va returna false.

Pentru a obține primele 5 câmpuri dintr-o linie din /etc/passwd:

Va fi emis.

Această caracteristică poate fi utilizată pentru a efectua comparații care nu țin cont de majuscule și minuscule în produsele care acceptă numai expresii care disting majuscule și minuscule.

Salutare tuturor, astazi vreau sa va povestesc despre program Reg Organizator. Acesta este un program cu multe funcții pentru întreținerea completă a sistemului de operare Familia Windows. Reg Organizer este perfect pentru Windows XP, Vista, 7, 8.1 și 10. Cu acest program, puteți accelera și optimiza sistemul de operare pe computer, eliberând resurse suplimentare.

Reg Organizer vă permite să eliminați complet programele din sistem, precum și să curățați toate deșeurile care rămân atunci când sunt dezinstalate prin panoul de control. Un manager unic de pornire va ajuta la accelerarea performanței sistemului cât mai mult posibil. Funcția de curățare a discului încorporată vă va ajuta să eliberați și mai mult spatiu liber pe discul computerului dvs. Reg Organizer facilitează curățarea și optimizarea registrului. Și acestea nu sunt toate capabilitățile programului.

Ce poate face Reg Organizer?

  • Reg Organizer vă va ajuta să dezinstalați complet programul și să eliminați rămășițele acestuia, prevenind registrul și discurile computerului să devină aglomerate.
  • Curățarea pornirii (autorun) va ajuta la eliminarea aplicațiilor care pornesc cu Windows. Acest lucru vă permite să accelerați încărcarea sălii de operație sisteme Windowsși, de asemenea, eliberați unele dintre resursele computerului dvs. În plus, în secțiunea de pornire puteți șterge și orice activități programate.
  • Discurile de curățare în modul automat vă va permite să eliberați număr mare spațiu liber pe disc de sistem. Puteți elimina tot ceea ce Windows nu curăța singur.
  • Prin utilizarea ajustări fineîn Reg Organizer puteți personaliza funcționarea sistemului de operare Windows pentru a se potrivi nevoilor dvs.
  • Curățarea registrului - Reg Organizer va găsi și elimina automat toate intrările inutile și eronate din sistem Registrul Windows, ceea ce poate afecta stabilitatea funcționării.
  • Reg Organizer vă permite să optimizați registry, să comprimați fișierele de registry și să-l defragmentați.
  • Editor convenabil registry în Reg Organizer vă va ajuta să efectuați diverse operațiuni cu registru de sistem, inclusiv export, import, copiere a valorilor cheie și multe altele.
  • Căutare ușoară și înlocuire a cheilor în registru - vă permite să găsiți cheile necesare și să le ștergeți dacă este necesar. În cazul în care aplicațiile nu au program de dezinstalare sau după dezinstalarea manuală a aplicației, în registry rămân intrări care pot provoca conflicte în registry, în acest caz funcția de căutare și înlocuire chei de registry va fi utilă. Reg Organizer efectuează o căutare profundă și adesea vă permite să găsiți chiar și ceea ce alte programe nu pot găsi.
  • Reg Organizer poate monitoriza tot ce face programul în timpul instalării și, dacă apar probleme, puteți anula tot ceea ce programul a încercat să facă în timpul instalării.
  • Programul poate găsi urme rămase ale programelor deja șterse. dacă ați dezinstalat incorect programul, Reg Organizer vă va ajuta să curățați urmele programului șters.

Puteți vedea mai multe detalii despre toate caracteristicile Reg Organizer în videoclipul meu:


Puteți descărca Reg Organizer de pe site-ul oficial folosind oricare dintre butoanele de descărcare.

#include
#include
int regcomp(regex_t *preg, const char *regex, intcsteaguri);
int regex(const regex_t *preg, const char *şir, dimensiunea_tnpotrivire,
regmatch_tpmeci, intsteaguri);
size_t regerror(intcod de eroare, const regex_t *preg, char *errbuf,
dimensiunea_terrbuf_size);
void regfree(regex_t *preg);

DESCRIERE

Compilarea expresiilor regulate POSIX

Funcţie regcomp() este folosit pentru a compila expresia regulată într-un format care este potrivit pentru căutările ulterioare folosind regexec().

regcomp() este transmis un pointer către zona de stocare a șablonului tampon preg, pointer către un șir terminat cu nul regexși steaguri csteaguri, folosit pentru a determina tipul de compilare.

Toate căutările expresii regulate trebuie executat folosind un șablon de buffer compilat, deci regexec() trebuie apelat întotdeauna cu adresa șablonului buffer inițializată de funcție regcomp().

Sens csteaguri poate consta din biți sau zero sau mai multe dintre următoarele valori:

REG_EXTENDED Utilizați sintaxa de expresie regulată extinsă POSIX în timpul interpretării regex. Dacă acest indicator nu este activat, este utilizată sintaxa expresiei regulate simple POSIX. REG_ICASE Ignora majusculele. Căutări ulterioare regexec() folosind acest tipar tampon nu va face distincție între majuscule și minuscule. REG_NOSUB Nu raportați poziția meciurilor. Opțiuni npotrivireŞi pmeci Pentru regexec() sunt ignorate dacă șablonul de buffer dat a fost compilat cu acest flag activat. REG_NEWLINE Operatorii de potrivire cu orice caracter nu se potrivesc cu caracterul de linie nouă.

Lista de caractere care nu se potrivesc ( [^...] ) fără un caracter de linie nouă nu este același lucru cu o linie nouă.

Operator de comparație bazat pe începutul unui șir ( ^ ) se potrivește cu șirul gol imediat după linia nouă, indiferent de ce steaguri, steaguri de execuție regexec(), conține REG_NOTBOL.

Operatorul de comparare de sfârșit de linie ($) potrivește șirul gol până la caracterul de început de linie, indiferent ce steaguri conţine REG_NOTEOL.

Comparație cu expresia regulată POSIX

Funcţie regexec() este folosit pentru a compara un șir terminat cu nul cu un model de buffer preprocesat preg. Argumente npotrivireŞi pmeci sunt folosite pentru a furniza informații despre locația oricăror potriviri. Sens steaguri poate fi pe biți SAU una sau ambele valori REG_NOTBOLŞi REG_NOTEOL. Aceste valori determină comportamentul procesului de comparație, așa cum este descris mai jos. REG_NOTBOL Operatorul de comparație de la începutul șirului eșuează întotdeauna (dar consultați steag-ul de compilare descris mai sus REG_NEWLINE). Acest steag poate fi folosit când regexec() sunt transmise părți separate ale unui șir, iar începutul unui astfel de șir în acest caz nu trebuie interpretat ca începutul unei noi linii. REG_NOTEOL Operatorul de comparație de sfârșit de linie eșuează întotdeauna (dar consultați steag-ul de compilare descris mai sus REG_NEWLINE).

Offset de octeți

Dacă REG_NOSUB nu este setat la compilarea șablonului tampon, este posibil să obțineți informații despre poziția potrivirilor. Sens pmeci trebuie definit să aibă cel puțin npotrivire elemente. Se umple regexec() adresele potrivirilor inline. Decalaje ale unei subexpresii începând cu i- paranteză deschisă, stocată în meci[i]. Adresa de potrivire a întregii expresii regulate este stocată în pmeci(rețineți că pentru a returna compensațiile meciului N subexpresii, sens npotrivire trebuie să fie cel puțin N+1). Orice elemente de structură neutilizate vor conține o valoare de -1.

Structura regmatch_t, care este un tip pmeci, definit în :

Typedef struct ( regoff_t rm_so; regoff_t rm_eo; ) regmatch_t;

Fiecare element rm_so, care nu este egal cu -1, indică decalajul de început al următoarei potriviri a celui mai mare subșir din șirul dat. Element relativ rm_eo indică decalajul sfârșitului potrivirii, care este primul caracter după textul potrivit.

Raportarea erorilor POSIX

Funcţie regoarea folosit pentru a converti codurile de eroare care pot fi primite de la regcomp() Și regexec(), în linii de mesaje de eroare.

ÎN regoarea transmis: cod de eroare cod de eroare, model tampon preg, un pointer către un buffer șir de caractere errbufși dimensiunea bufferului de rând errbuf_size. Funcția returnează dimensiunea errbuf, care este necesar pentru a stoca mesajul de eroare ca șir terminat nul. Dacă și errbuf, Și errbuf_size nu sunt egale cu zero, atunci errbuf umplut primul errbuf_size - 1 caracterele mesajului de eroare și se termină cu un octet nul ("\0").

Eliberarea unui tampon de șablon POSIX

Funcţie regfree() eliberează memoria alocată șablonului buffer pregîn timpul procesului de compilare folosind regcomp().

VALOARE DE RETURNARE

Funcţie regcomp() returnează zero la compilarea cu succes sau un cod de eroare în caz contrar.

Funcţie regexec() returnează zero la meci sau REG_NOMATCH, dacă nu ar exista meciuri.

ERORI

Funcţie regcomp() poate returna următoarele erori: REG_BADBR Utilizarea incorectă a operatorului de backlink. REG_BADPAT Utilizarea incorectă a operatorilor de șablon, cum ar fi operatorii de grup sau de listă. REG_BADRPT Utilizarea incorectă a operatorilor de repetiție, cum ar fi folosirea „*” ca prim caracter. REG_EBRACE Paranteze nepereche în operatorii de interval. REG_EBRACK Paranteze pătrate nepereche în instrucțiunile de listă. REG_ECOLLATE Element de sortare nevalid. REG_ECTTYPE Numele clasei de caractere necunoscut. REG_EEND Eroare potențială. Nu este definit în POSIX.2. REG_EESCAPE Bară oblică inversă. REG_EPAREN Paranteze nepereche în operatorii de grupare. REG_ERANGE Utilizarea incorectă a operatorului de zonă: de exemplu, sfârșitul zonei apare înainte de începutul acesteia. REG_ESIZE Expresia regulată compilată necesită un model de buffer mai mare de 64 KB. Acest lucru nu este definit în POSIX.2. REG_ESPACE Rutinele de expresie regulată au rămas fără memorie. REG_ESUBREG Incorect backlink la o subexpresie.