Man regcomp(3): funzioni di espressione regolare POSIX. Scarica Reg Organizer: pulizia e ottimizzazione del sistema Reg comp illimitato php

Questa guida all'installazione ti aiuterà a installare e configurare PHP3 sui tuoi server web Windows 9x/NT. Questo manuale compilato da Bob Silva. Ultima versione può essere trovato su http://www.umesd.k12.or.us/php/win32install.html.

Questa guida fornisce supporto per l'installazione su:

Server Web personale (consigliato versione più recente)
Internet Information Server 3 o 4
Apache 1.3.x
OmniHTTPd 2.0b1
Modifica della configurazione per PHP3:

Tutti i moduli ora iniziano con il prefisso "php3_". È necessario modificare il file php3.ini e/o tutti gli script di caricamento delle estensioni con la funzione dl()(o rimuovere il prefisso "php3_" ovunque). Ciò eviterà confusione tra Moduli PHP e le loro biblioteche di supporto.

ChangeLog, FAQ e documentazione aggiornata possono sempre essere trovati sul sito web ufficiale di PHP o su uno qualsiasi dei suoi mirror.

Passaggi di installazione di base:

Questi passaggi devono essere completati su qualsiasi installazione prima delle istruzioni specifiche del server:

    Scompatta il file di distribuzione in una directory a tua scelta.

    Una buona opzione sarebbe "C:\PHP3\".

    Copia il file "php3-dist.ini" nella directory "%WINDOWS%" e rinominalo "php3.ini".
    La tua directory "%WINDOWS%" è solitamente:
  • c:\finestre per Windows 95/98

    • c:\winnt o c:\winnt40 per server NT

      Modifica il tuo file "php3.ini":

      dovrai cambiare "extension_dir" con il percorso della directory di installazione di PHP o dove hai posizionato i file "php3_*.dll" (ad esempio c:\php3); impostare "doc_root" sul percorso in cui si trova la document_root del server web (ad esempio c:\apache\htdocs oppure c:\webroot); seleziona quali moduli vuoi caricare all'avvio di PHP. Puoi rimuovere il commento dalle righe "extension=php3_*.dll" per caricare i moduli appropriati. Alcuni moduli richiedono installazione aggiuntiva

      alcune librerie nel sistema per il corretto funzionamento. Consulta le domande frequenti su PHP per ulteriori informazioni su dove ottenere le librerie di supporto. Ulteriori informazioni Per informazioni sull'utilizzo di browscap in PHP, vai su mirror , seleziona il pulsante "source" per vederlo in azione;

Windows 95/98/NT e PWS/IIS 3:

Il metodo consigliato per configurare questi server è utilizzare i file INF forniti con la distribuzione (php_iis_reg.inf). Puoi modificare questo file e assicurarti che le estensioni e la directory di installazione di PHP corrispondano alle tue impostazioni. Oppure puoi seguire i passaggi elencati di seguito per farlo manualmente.

ATTENZIONE: questi passaggi includono lavoro diretto con il registro di Windows. Ti consigliamo vivamente di farlo prima copia di backup

    registro. Il team di sviluppo PHP non è responsabile se danneggi il registro.

    Avvia Regedit;
    Passare a: HKEY_LOCAL_MACHINE /System/CurrentControlSet/Services

    /W3Svc /Parameters/ScriptMap .

    Dal menu di modifica, seleziona Nuovo->Valore stringa.

    Determina l'estensione che desideri utilizzare per i tuoi script PHP (ad esempio.php3). Fare doppio clic sul valore nuova linea

    e inserisci il percorso di php.exe exe nel campo dati (ad esempio c:\php3\php.exe %s %s). "%s %s" sono MOLTO importanti, PHP non funzionerà correttamente senza di essi;

    Ripeti questi passaggi per ogni estensione che desideri associare agli script PHP;

    Ora vai su HKEY_CLASSES_ROOT;

    Dal menu di modifica selezionare Nuovo->Chiave ;

    Determina la chiave dell'estensione che hai installato nella sezione precedente (ad esempio.php3

    Seleziona la nuova chiave, fai doppio clic su "valore predefinito" sul lato destro della finestra e inserisci phpfile .

    Ripeti l'ultimo passaggio per ciascuna estensione installata nella sezione precedente;

    Ora crea un'altra Nuova->Chiave sotto HKEY_CLASSES_ROOT e questo è il nome del file php.

    Evidenzia la nuova chiave phpfile phpfile e sul lato destro della finestra, fai doppio clic su "valore predefinito" e inserisci PHP Script .

    Fare clic con il tasto destro sul file php e selezionare Nuovo->Chiave, questo è il nome della Shell.

    Fare clic con il tasto destro su Shell e selezionare Nuovo->Chiave, questo nome è aperto.

    Fare clic con il tasto destro su Apri e selezionare Nuovo->Chiave, questo nome è comando.

    Seleziona il nuovo tasto comando e, sul lato destro della finestra, fai doppio clic su "valore predefinito" e inserisci il percorso di php.exe. Ad esempio: c:\php3\php.exe -q %1 . (non dimenticare %1).

Esci da Regedit;

Gli utenti PWS e IIS 3 ora dispongono di un sistema completamente funzionante.

Per installare PHP3 su un server NT che esegue IIS4, seguire queste istruzioni:

    IN Servizio Internet Manager (MMC) seleziona il sito Web o la home directory dell'applicazione;

    Aprire il menu delle proprietà della directory (fare clic con il tasto destro e selezionare proprietà), quindi fare clic su Home Directory, Directory virtuale o scheda Directory;

    Fare clic sul pulsante Configurazione e quindi selezionare la scheda Mappature app;

    Fare clic su Aggiungi, nel tipo di frame eseguibile c:\path-to-php-dir\php.exe %s %s .

    DEVI terminare %s con %s , PHP non funzionerà correttamente in caso contrario;

    Nella casella Estensione, specifica l'estensione del file che desideri associare agli script PHP (solitamente (.php3 e .phtml); Imposta la sicurezza richiesta (questa operazione viene eseguita in Gestione servizio Internet) e, se utilizzata dal tuo server NT file system

NTFS, aggiungi i permessi di esecuzione alla directory I_USR_, che contiene php.exe .

Windows 9x/NT e Apache 1.3.x

È necessario modificare il file srm.conf o httpd.conf per configurare Apache in modo che funzioni con gli eseguibili PHP CGI.

    Sebbene possano esserci diverse opzioni per configurare PHP sotto Apache, è abbastanza semplice anche per un principiante. Fare riferimento alla documentazione di Apache per informazioni sulle direttive di configurazione.

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

    AddType application/x-httpd-php3 .php3

    AddType application/x-httpd-php3 .phtml

Azione applicazione/x-httpd-php3 "php3/php.exe" Per abilitare l'uso testo di origine , crea semplicemente un file di script PHP e incolla questo codice in: . Sostituisci original_php_script.php3 php3 con il nome del file sorgente desiderato (questo è solo uno dei percorsi). notare che

che su Win-Apache tutte le barre rovesciate in un percorso di frase come "c:\directory\file.ext" dovrebbero essere sostituite con barre.

Omni HTTPd 2.0b1 per Windows

Questa configurazione dovrebbe essere la più semplice:

Ripeti i passaggi da 2 a 6 per ciascuna estensione che desideri associare a PHP.

Moduli PHP:

Tabella 3-1. Moduli PHP php3_calendar.dll
Funzioni di conversione del calendario php3_crypt.dll
Funzioni di crittografia php3_dbase.dll
Funzioni della banca dati php3_dbm.dll
Emulazione GDBM utilizzando la libreria Berkely DB2 php3_filepro.dll
Accesso in SOLA LETTURA ai database filepro php3_gd.dll
Libreria di funzioni GD per la manipolazione delle gif php3_hyperwave.dll
Funzionalità di HyperWave php3_imap4r2.dll
Funzionalità di IMAP4 php3_ldap.dll
Funzionalità LDAP php3_msql1.dll
Client SQL1 php3_msql2.dll
client SQL2 Client MSSQL (richiede librerie DB MSSQL)
php3_mysql.dll Funzioni MySQL
php3_nsmail.dll Funzionalità di posta di Netscape
php3_oci73.dll Funzioni dell'Oracolo
php3_snmp.dll Funzioni SNMP (solo NT!)
php3_zlib.dll Funzioni ZLib

Innanzitutto miglioreremo la pagina di registrazione aggiungendo la possibilità di caricare un avatar. L'immagine sorgente deve essere in formato jpg, gif o png. Inoltre, non dovrebbe essere superiore a 2 MB. Non preoccuparti, dopo essere stato compresso dallo script, la dimensione dell'avatar sarà di circa 3 kb e sarà in formato jpg. Apri la pagina reg.php e aggiungilo nel tag < modulo> linea enctype="multipart/form-data", come nell'esempio:


Registrazione










Ora salviamo reg.php

2.Quindi è necessario creare un altro campo nella tabella utenti. Andiamo a phpmyadmin, selezionare il database e la tabella desiderati.


Impostiamo tutti i valori come in figura:

Il percorso dell'avatar verrà registrato in questo campo e verrà salvato cartella separata, chiamiamoli “avatar”. La cartella si troverà nella stessa directory del resto dei file di script.

3.Vai al file salva_ utente. php e aggiungi il seguente codice dopo aver rimosso gli spazi da login e password:

//rimuove gli spazi extra
$login = trim($login);

// aggiungi nuovo ********************************************

//aggiungi un controllo per la lunghezza del login e della password
if (strlen($accedi)< 3 or strlen($login) > 15) {
exit("Il login deve contenere almeno 3 caratteri e non più di 15.");
}
if (strlen($password)< 3 or strlen($password) > 15) {
exit("La password deve contenere almeno 3 caratteri e non più di 15.");
}

if (!empty($_POST["fupload"])) //controlla se l'utente ha inviato l'immagine
{
$fupload=$_POST["fupload"]; $caricamento = taglia($caricamento);
if ($fupload =="" o vuoto($fupload)) (
unset($fupload);// se la variabile $fupload è vuota, eliminala
}
}
if (!isset($fupload) o vuoto($fupload) o $fupload =="")
{
//se la variabile non esiste (l'utente non ha inviato un'immagine), assegnale un'immagine pre-preparata con la scritta "no avatar"
$avatar = "avatars/net-avatara.jpg"; //puoi disegnare net-avatara.jpg o prenderlo dalla fonte
}
altro
{
//altrimenti - carica l'immagine dell'utente
$path_to_90_directory = "avatars/";//cartella in cui verrà caricata l'immagine iniziale e la sua copia compressa

If(preg_match("/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/",$_FILES["fupload"]["nome"])) //verifica il formato dell'immagine sorgente
{
$nomefile = $_FILES["fupload"]["nome"];
$fonte = $_FILES["fupload"]["tmp_name"];
$destinazione = $percorso_della_90_directory . $nomefile;
move_uploaded_file($source, $target);//caricamento dell'originale nella cartella $path_to_90_directory
if(preg_match("/[.](GIF)|(gif)$/", $nomefile)) (
$im = imagecreatefromgif($percorso_della_90_directory.$nomefile) ; //se l'originale era in formato GIF, crea un'immagine nello stesso formato. Necessario per la successiva compressione
}
if(preg_match("/[.](PNG)|(png)$/", $nomefile)) (
$im = imagecreatefrompng($path_to_90_directory.$filename) ;//se l'originale era in formato png, crea l'immagine nello stesso formato. Necessario per la successiva compressione
}

If(preg_match("/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/", $nomefile)) (
$im = imagecreatefromjpeg($percorso_della_90_directory.$nomefile); //se c'era l'originale formato jpg, quindi creiamo un'immagine nello stesso formato. Necessario per la successiva compressione
}
//CREAZIONE DI UN'IMMAGINE QUADRATA E SUA SUCCESSIVA COMPRESSIONE TRATTATA DAL SITO www.codenet.ru
// Crea un quadrato 90x90
// dest: l'immagine risultante
// w - larghezza dell'immagine
// rapporto - coefficiente di proporzionalità
$w = 90; // quadrato 90x90. Può essere fornito in altre dimensioni.
// crea l'immagine originale basata su
// file sorgente e determinarne la dimensione
$w_src = immaginix($im); //calcola la larghezza
$h_src = immaginisy($im); //calcola l'altezza dell'immagine
// crea un'immagine quadrata vuota
// truecolor è importante!, altrimenti avremo un risultato a 8 bit
$dest = imagecreatetruecolor($w,$w);
// ritaglia il centro del quadrato lungo x se la foto è orizzontale
se ($w_src>$h_src)
copiaimmaginecampionata($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// ritaglia la parte superiore quadrata lungo la y,
// se la foto è verticale (anche se puoi usare anche la parte centrale)
se ($w_src<$h_src)
copiaimmaginecampionata($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));
// l'immagine quadrata viene ridimensionata senza ritagli
se ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$data=ora(); //calcola l'ora corrente.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");//salva l'immagine in formato jpg nella cartella desiderata, il nome sarà l'ora corrente. Realizzato per evitare che gli avatar abbiano gli stessi nomi.
//perché jpg? Occupa pochissimo spazio + l'animazione dell'immagine GIF, che distrae l'utente, viene distrutta. Non è molto piacevole leggere il suo commento quando noti qualche movimento con la coda dell’occhio.
$avatar = $path_to_90_directory.$date.".jpg";//inserisci il percorso dell'avatar nella variabile.
$delfull = $percorso_della_90_directory.$nomefile;
scollega ($delfull);//elimina l'immagine originale caricata, non ne abbiamo più bisogno. Il compito era ottenere una miniatura.
}
altro
{
//in caso di mancata corrispondenza del formato, emette un messaggio corrispondente
exit("L'avatar deve essere nel formato JPG, GIF o PNG");
}
//fine del processo di caricamento e assegnazione alla variabile $avatar dell'indirizzo dell'ava
}



// aggiunto nuovo ********************************************** **
// Poi viene tutto dalla prima parte dell'articolo, ma è necessario aggiungere una modifica alla query del database.
//connettersi al database
// verifica l'esistenza di un utente con lo stesso login
$risultato = mysql_query("SELECT id FROM utenti WHERE login="$login"",$db);
if (!vuoto($myrow["id"])) (
exit("Spiacenti, il login inserito è già registrato. Inserisci un altro login.");
}
// se così non fosse, salva i dati
$risultato2 = mysql_query("INSERT INTO utenti (login,password,avatar) VALUES("$login","$password","$avatar")");
// Controlla se ci sono errori
se ($risultato2=="VERO")
{
echo "Sei registrato con successo! Adesso puoi entrare nel sito. Home page";
}
altro(
echo "Errore! Non sei registrato.";
}
?>

4. È necessario aggiungere una tabella allo stesso database. Memorizzerà gli indirizzi IP che hanno commesso errori durante l'accesso. In questo modo possiamo limitare l'accesso a coloro che hanno commesso errori più di tre volte di seguito per circa 15 minuti. Penso che i programmi che selezionano le password dovranno armeggiare a lungo.
Andiamo su phpmyadmin e creiamo una nuova tabella con 3 campi:


ip - indirizzo IP.
data - data dell'accesso non riuscito negli ultimi 15 minuti per l'utente con questo IP. col - il numero di errori negli ultimi 15 minuti per l'utente con questo IP.
Grande! Fatto, ora cambiamo il file di verifica di login e password, perché ora la nostra password è crittografata. Apri testreg.php ed elimina tutto oltre alla rimozione degli spazi dal login e dalla password. Successivamente aggiungiamo il seguente codice:

//rimuove gli spazi extra
$login = trim($login);
$password = taglia($password);

// sostituiscilo con uno nuovo******************************************** *******
// connettersi al database
include("bd.php");// il file bd.php deve essere nella stessa cartella di tutti gli altri, se non lo è basta cambiare il percorso
// mini-controllo per la selezione della password
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (vuoto($ip) || $ip=="sconosciuto") ( $ip=getenv("REMOTE_ADDR"); )//estrai ip
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 900");//elimina gli indirizzi IP degli utenti che hanno effettuato l'accesso in modo errato dopo 15 minuti.
$result = mysql_query("SELECT col FROM oshibka WHERE ip="$ip"",$db); // recupera dal database il numero di tentativi di accesso non riusciti negli ultimi 15 per un utente con un determinato ip
$miariga = mysql_fetch_array($risultato);
if ($miariga["col"] > 2) (
//se ci sono più di due errori, cioè tre, inviamo un messaggio.
exit("Hai inserito nome utente o password in modo errato per 3 volte. Attendi 15 minuti prima di riprovare.");
}
$password = md5($password);//crittografa la password
$password = strrev($password);// per affidabilità, aggiungi il contrario
$password = $password."b3p6f";
//puoi aggiungere alcuni dei tuoi personaggi secondo i tuoi gusti, ad esempio inserendo "b3p6f". Se questa password viene violata con la forza bruta sullo stesso server md5, ovviamente non ne verrà fuori nulla di buono. Ma ti consiglio di mettere altri caratteri, magari all'inizio della riga o al centro.
//In questo caso è necessario aumentare la lunghezza del campo password nel database. La password crittografata potrebbe essere molto più grande.

$risultato = mysql_query("SELECT * FROM utenti WHERE login="$login" AND password="$password"",$db); //recupera dal database tutti i dati sull'utente con il login e la password immessi
$miariga = mysql_fetch_array($risultato);
if (vuoto($myrow["id"]))
{
//se l'utente con login e password immessi non esiste
//Registriamo che questo IP non è riuscito ad accedere.
$select = mysql_query("SELEZIONA ip FROM oshibka WHERE ip="$ip"");
$tmp = mysql_fetch_row($select);
if ($ip == $tmp) (//controlla se l'utente è nella tabella "oshibka".
$risultato52 = mysql_query("SELEZIONA col FROM oshibka WHERE ip="$ip"",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52 + 1;//aggiungi un altro tentativo di accesso non riuscito
mysql_query("AGGIORNAMENTO errore SET col=$col,date=ORA() DOVE ip="$ip"");
}
altro(
mysql_query("INSERT INTO oshibka (ip,date,col) VALUES ("$ip",NOW(),"1")");
//se non si sono verificati errori negli ultimi 15 minuti, inserire nuova entrata al tavolo "oshibka".
}

exit("Siamo spiacenti, il login o la password che hai inserito non sono corretti.");
}
altro(
nbsp; //se le password corrispondono, lanciamo una sessione per l'utente! Puoi congratularti con lui, è entrato!
$_SESSION["password"]=$miariga["password"];
$_SESSION["login"]=$miariga["login"];
$_SESSION["id"]=$myrow["id"];//questi dati vengono utilizzati molto spesso, quindi l'utente registrato li “porterà con sé”

//Successivamente salviamo i dati nei cookie per il successivo login.
//ATTENZIONE!!! FATELO A VOSTRA DISCREZIONE IN QUANTO I DATI SONO MEMORIZZATI NEI COOKIE SENZA CRITTOGRAFIA
if ($_POST["salva"] == 1) (
//Se l'utente desidera che i suoi dati vengano salvati per il login successivo, li salviamo nei cookie del suo browser
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
}}
eco" ";//reindirizziamo l'utente alla pagina principale, dove gli avviseremo l'avvenuto accesso
?>

5. Cambieremo completamente la pagina principale. È necessario visualizzare l'avatar dell'utente su di esso, visualizzare un collegamento per disconnettersi dall'account e aggiungere una casella di controllo per ricordare la password durante l'accesso.
Indice.php

// l'intera procedura funziona in sessioni. È qui che vengono archiviati i dati dell'utente mentre si trova sul sito. È molto importante lanciarli all'inizio della pagina!!!
inizio_sessione();
include("bd.php");// il file bd.php deve essere nella stessa cartella di tutti gli altri, se non lo è basta cambiare il percorso
if (!vuoto($_SESSION["login"]) e !vuoto($_SESSION["password"]))
{
//se sono presenti login e password nelle sessioni, controllali e recupera l'avatar
$login = $_SESSION["login"];
$password = $_SESSION["password"];
$risultato = mysql_query("SELECT id,avatar FROM utenti WHERE login="$login" AND password="$password"",$db);
$miariga = mysql_fetch_array($risultato);
//estrae i dati utente necessari
}
?>


Pagina iniziale


Pagina iniziale

if (!isset($myrow["avatar"]) or $myrow["avatar"]=="") (
//controlla se i dati dell'utente sono stati estratti dal database. In caso contrario, non ha effettuato l'accesso oppure la password nella sessione non è corretta. Visualizziamo una finestra di accesso. Ma non lo mostreremo a chi entra, non ne ha più bisogno.
stampa<<


QUI;

If (isset($_COOKIE["login"])) //c'è una variabile con login in COOKIE. Dovrebbe essere se l'utente ha fatto clic sulla casella di controllo "Ricordami" durante l'accesso precedente
{
//se sì, inserisci il suo valore nel modulo. In questo caso all'utente viene mostrato che il suo login è già stato inserito nella colonna richiesta
echo " valore="".$_COOKIE["login"]."">";
}

stampa<<




QUI;

If (isset($_COOKIE["password"]))//se è presente una variabile con una password nel COOKIE. Dovrebbe essere se l'utente ha fatto clic sulla casella di controllo "Ricordami" durante l'accesso precedente
{
//se sì, inserisci il suo valore nel modulo. In questo caso all'utente viene mostrato che la sua password è già stata inserita nella colonna richiesta
echo " valore="".$_COOKIE["password"]."">";
}

Stampa<<



Ricordati di me.






Registro



Hai effettuato l'accesso come ospite

QUI;
}
altro
{
//se l'accesso ha esito positivo, all'utente viene fornito tutto ciò che segue tra gli asterischi.

stampa<<
Hai effettuato l'accesso al sito come $_SESSION (esci)


Questo collegamento è disponibile solo per gli utenti registrati

Il tuo avatar:




QUI;

//************************************************************************************
//se il login ha esito positivo, all'utente viene fornito tutto ciò che si trova SOPRA tra gli asterischi.
}
?>

6. È necessario consentire agli utenti registrati di disconnettersi. SU pagina iniziale C'era già un collegamento all'uscita. Ma questo file non esiste ancora. Quindi creiamo nuovo file uscita.php con codice:

inizio_sessione();
if (vuoto($_SESSION["login"]) o vuoto($_SESSION["password"]))
{
//se non è presente alcuna sessione con login e password, significa che l'accesso a questo file è stato effettuato da un utente non registrato. Non appartiene a questo posto. Emettiamo un messaggio di errore e interrompiamo lo script
exit ("L'accesso a questa pagina è consentito solo agli utenti registrati. Se sei registrato effettua il login al sito utilizzando il tuo nome utente e password
Pagina iniziale");
}

unset($_SESSION["password"]);
unset($_SESSION["login"]);
unset($_SESSION["id"]);// distrugge le variabili nelle sessioni
Uscita(" ");
// invia l'utente alla pagina principale.
?>

Bene, questo è tutto! Divertitevi per la vostra salute! Buona fortuna!

Contenuto

ereg

ereg -- valore abbinato dell'espressione regolare
Descrizione
int ereg (modello di stringa, stringa stringa, array );

Cerca valori accoppiati corda nell'espressione regolare specificata in modello .

Se vengono trovati valori accoppiati per le sottostringhe tra parentesi modello e la funzione è stata chiamata con il terzo argomento reg, quindi i valori accoppiati verranno memorizzati negli elementi reg. $regs conterrà una sottostringa che inizia con la prima parentesi sinistra; corda .

$regs conterrà la sottostringa che inizia con la seconda parentesi, ecc. $regs conterrà una copia

La ricerca distingue tra maiuscole e minuscole.

La funzione restituisce true se nella stringa è stato trovato un valore corrispondente per pattern, oppure false se non è stato trovato alcun valore corrispondente o si è verificato un errore. Il codice seguente recupera la data in Formato ISO

e output nel formato GG.MM.AAAA:

Esempio 1. esempio ereg()

If (ereg("((4))-((1,2))-((1,2))", $data, $regs)) ( echo "$regs.$regs.$regs"; ) else ( echo "Formato data non valido: $data"; )

ereg_replace
Descrizione
ereg_replace: sostituisce l'espressione regolare

string ereg_replace(modello di stringa, sostituzione di stringa, stringa di stringa); corda Questa funzione esegue la scansione modello a valori accoppiati k , quindi sostituisce il testo trovato con .

sostituzione modello Se , quindi sostituisce il testo trovato con contiene sottostringhe tra parentesi, quindi può contenere sottostringhe come \\ numero

, che verrà sostituito con il testo corrispondente alla sottostringa numerica tra parentesi; \\0 elaborerà l'intero contenuto della stringa. È possibile utilizzare fino a 9 sottostringhe. Le parentesi possono essere raggruppate, nel qual caso vengono contate in base alle parentesi aperte. Ad esempio, il codice seguente stamperà "Questo era un test" tre volte:

$string = "Questo è un test"; echo ereg_replace(" è", " era", $stringa); echo ereg_replace("()is", "\\1was", $string); echo ereg_replace("(()is)", "\\2was", $string);

Vedi anche , , e .

eregi

eregi: ricerca senza distinzione tra maiuscole e minuscole per valori accoppiati nelle espressioni regolari
Descrizione
int eregi (modello di stringa, stringa stringa, array );

eregi_replace

eregi_replace -- sostituzione di espressioni regolari senza distinzione tra maiuscole e minuscole
Descrizione
string eregi_replace(modello di stringa, sostituzione di stringa, stringa di stringa);

diviso

split: divide una stringa in un array utilizzando un'espressione regolare
Descrizione
divisione dell'array (modello di stringa, stringa stringa, int );

Restituisce un array di stringhe, ciascuna delle quali è una sottostringa di una stringa, formata suddividendo la stringa in parti separate l'una dall'altra modello. Se si verifica un errore, la funzione restituirà false.

Per ottenere i primi 5 campi da una riga in /etc/passwd:

Verrà rilasciato.

Questa funzionalità può essere utilizzata per eseguire confronti senza distinzione tra maiuscole e minuscole in prodotti che supportano solo espressioni con distinzione tra maiuscole e minuscole.

Ciao a tutti, oggi voglio parlarvi del programma Organizzatore Reg. Questo è un programma con molte funzioni per la manutenzione completa del sistema operativo Famiglia Windows. Reg Organizer è perfetto per Windows XP, Vista, 7, 8.1 e 10. Usando questo programma, puoi velocizzare e ottimizzare il sistema operativo del tuo computer, liberando risorse aggiuntive.

Reg Organizer ti consente di rimuovere completamente i programmi dal sistema, nonché di ripulire tutta la spazzatura rimasta dopo la disinstallazione tramite il pannello di controllo. Un gestore di avvio unico aiuterà ad accelerare il più possibile le prestazioni del sistema. La funzione di pulizia del disco integrata ti aiuterà a liberare ancora di più spazio libero sul disco del tuo computer. Reg Organizer semplifica la pulizia del registro e l'ottimizzazione. E queste non sono tutte le funzionalità del programma.

Cosa può fare Reg Organizer?

  • Reg Organizer ti aiuterà a disinstallare completamente il programma e a rimuovere i suoi resti, evitando che il registro e i dischi del computer diventino ingombranti.
  • La pulizia dell'avvio (esecuzione automatica) aiuterà a rimuovere le applicazioni che si avviano con Windows. Ciò consente di velocizzare il caricamento della sala operatoria Sistemi Windows e libera anche alcune risorse del tuo computer. Inoltre, nella sezione di avvio puoi anche eliminare eventuali attività pianificate.
  • Dischi di pulizia dentro modalità automatica ti permetterà di liberarti gran numero spazio libero su disco di sistema. Puoi rimuovere tutto ciò che Windows non pulisce da solo.
  • Utilizzando regolazioni fini in Reg Organizer è possibile personalizzare il funzionamento del sistema operativo Windows in base alle proprie esigenze.
  • Pulizia del registro: Reg Organizer troverà ed eliminerà automaticamente tutte le voci non necessarie ed errate nel sistema Registro di sistema di Windows, che potrebbero compromettere la stabilità del funzionamento.
  • Reg Organizer ti consente di ottimizzare il registro, comprimere i file di registro e deframmentarlo.
  • Editor conveniente Il registro in Reg Organizer ti aiuterà a eseguire varie operazioni con registro di sistema, inclusi esportazione, importazione, copia di valori chiave e molto altro.
  • Facile ricerca e sostituzione delle chiavi nel registro: consente di trovare le chiavi necessarie e di eliminarle se necessario. Nel caso in cui le applicazioni non dispongano di un programma di disinstallazione o dopo aver disinstallato manualmente l'applicazione, nel registro rimangono delle voci che possono causare conflitti nel registro, in questo caso sarà utile la funzione di ricerca e sostituzione delle chiavi di registro. Reg Organizer esegue una ricerca approfondita e spesso ti consente di trovare anche ciò che altri programmi non riescono a trovare.
  • Reg Organizer può monitorare tutto ciò che fa il programma durante l'installazione e, se si verificano problemi, puoi annullare tutto ciò che il programma ha tentato di fare durante l'installazione.
  • Il programma può trovare tracce rimanenti di programmi già eliminati. se hai disinstallato il programma in modo errato, Reg Organizer ti aiuterà a eliminare le tracce del programma eliminato.

Puoi vedere maggiori dettagli su tutte le funzionalità di Reg Organizer nel mio video:


Puoi scaricare Reg Organizer dal sito Web ufficiale utilizzando uno qualsiasi dei pulsanti di download.

#includere
#includere
int regcomp(regex_t *preg, carattere costante *espressione regolare, intcflag);
int regexec(const regex_t *preg, carattere costante *corda, taglia_tnmatch,
regmatch_tpmatch, inteflag);
size_t regererrore(intcodiceerr, const regex_t *preg, carattere *errbuf,
taglia_terrbuf_size);
void regfree(regex_t *preg);

DESCRIZIONE

Compilazione di espressioni regolari POSIX

Funzione regcomp() viene utilizzato per compilare l'espressione regolare in un formato adatto per le ricerche successive utilizzando regexec().

regcomp() viene passato un puntatore all'area di memorizzazione del modello buffer preg, puntatore a una stringa con terminazione null espressione regolare e bandiere cflag, utilizzato per determinare il tipo di compilazione.

Tutte le ricerche espressioni regolari deve essere eseguito utilizzando un modello di buffer compilato, quindi regexec() deve essere sempre chiamato con l'indirizzo del buffer template inizializzato dalla funzione regcomp().

Senso cflag può essere bit per bit O zero o più dei seguenti valori:

REG_ESTESA Utilizzare la sintassi delle espressioni regolari estese POSIX durante l'interpretazione espressione regolare. Se questo flag non è abilitato, viene utilizzata la sintassi dell'espressione regolare semplice POSIX. REG_ICASE Ignora maiuscole e minuscole. Ricerche successive regexec() utilizzando questo modello di buffer non farà distinzione tra maiuscole e minuscole. REG_NOSUB Non segnalare la posizione delle partite. Opzioni nmatch E pmatch Per regexec() vengono ignorati se il modello di buffer specificato è stato compilato con questo flag abilitato. REG_NEWLINE Gli operatori di corrispondenza con qualsiasi carattere non corrispondono al carattere di nuova riga.

Elenco dei caratteri non corrispondenti ( [^...] ) senza un carattere di nuova riga non è la stessa cosa di un carattere di nuova riga.

Operatore di confronto basato sull'inizio di una stringa ( ^ ) corrisponde alla stringa vuota immediatamente dopo il ritorno a capo, qualunque cosa accada eflag, flag di esecuzione regexec(), contenere REG_NOTBOL.

L'operatore di confronto di fine riga ($) corrisponde alla stringa vuota fino al carattere di inizio riga, qualunque cosa accada eflag contiene REG_NOTEOL.

Confronto con l'espressione regolare POSIX

Funzione regexec() viene utilizzato per confrontare una stringa con terminazione null con un modello di buffer preelaborato preg. Argomenti nmatch E pmatch vengono utilizzati per fornire informazioni sulla posizione di eventuali partite. Senso eflag può essere bit a bit O uno o entrambi i valori REG_NOTBOL E REG_NOTEOL. Questi valori determinano il comportamento del processo di confronto come descritto di seguito. REG_NOTBOL L'operatore di confronto all'inizio della stringa fallisce sempre (ma vedi il flag di compilazione descritto sopra REG_NEWLINE). Questo flag può essere utilizzato quando regexec() vengono trasmesse parti separate di una stringa e in questo caso l'inizio di tale stringa non deve essere interpretato come l'inizio di una nuova riga. REG_NOTEOL L'operatore di confronto di fine riga fallisce sempre (ma vedi il flag di compilazione descritto sopra REG_NEWLINE).

Offset di byte

Se REG_NOSUB non viene impostato durante la compilazione del buffer template, è possibile ottenere informazioni sulla posizione delle corrispondenze. Senso pmatch deve essere definito avere almeno nmatch elementi. Si stanno riempiendo regexec() indirizzi delle corrispondenze in linea. Offset di una sottoespressione che inizia con io- parentesi aperta, memorizzata in partita[i]. L'indirizzo di corrispondenza dell'intera espressione regolare è memorizzato in pmatch(nota che per restituire gli offset della corrispondenza N sottoespressioni, significato nmatch non deve essere da meno N+1). Tutti gli elementi della struttura non utilizzati conterranno un valore pari a -1.

Struttura regmatch_t, che è un tipo pmatch, definito in :

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

Ogni elemento rm_così, diverso da -1, indica l'offset iniziale della corrispondenza successiva della sottostringa più grande all'interno della stringa specificata. Elemento relativo rm_eo indica l'offset della fine della corrispondenza, ovvero il primo carattere dopo il testo corrispondente.

Segnalazione errori POSIX

Funzione regererrore utilizzato per convertire i codici di errore che possono essere ricevuti da regcomp() E regexec(), nelle righe del messaggio di errore.

IN regererrore trasmesso: codice errore codiceerr, modello di buffer preg, puntatore al buffer della stringa di caratteri errbuf e la dimensione del buffer di riga errbuf_size. La funzione restituisce la dimensione errbuf, necessario per archiviare il messaggio di errore come stringa con terminazione null. Se e errbuf, E errbuf_size non sono uguali a zero, quindi errbuf riempito per primo errbuf_dimensione - 1 caratteri del messaggio di errore e termina con un byte null ("\0").

Liberazione di un buffer modello POSIX

Funzione regfree() libera la memoria allocata al modello buffer preg durante il processo di compilazione utilizzando regcomp().

VALORE DI RESTITUZIONE

Funzione regcomp() restituisce zero in caso di compilazione riuscita o altrimenti un codice di errore.

Funzione regexec() restituisce zero in caso di corrispondenza o REG_NOMATCH, se non ci fossero corrispondenze.

ERRORI

Funzione regcomp() può restituire i seguenti errori: REG_BADBR Utilizzo errato dell'operatore backlink. REG_BADPAT Utilizzo non corretto degli operatori del modello, come gli operatori di gruppo o di elenco. REG_BADRPT Utilizzo errato degli operatori di ripetizione, ad esempio utilizzando "*" come primo carattere. REG_EBRACE Parentesi spaiate negli operatori di intervallo. REG_EBRACK Parentesi quadre non accoppiate nelle istruzioni di elenco. REG_ECOLLATE Elemento di ordinamento non valido. REG_ECTYPE Nome della classe di caratteri sconosciuto. REG_EEND Potenziale errore. Non definito in POSIX.2. REG_EESCAPE Barra rovesciata finale. REG_EPAREN Parentesi spaiate negli operatori di raggruppamento. REG_RANGE Utilizzo errato dell'operatore di area: ad esempio la fine dell'area appare prima del suo inizio. REG_SIZE L'espressione regolare compilata richiede un modello di buffer maggiore di 64 KB. Questo non è definito in POSIX.2. REG_ESPAZIO Le routine delle espressioni regolari hanno esaurito la memoria. REG_ESUBREG Errato backlink ad una sottoespressione.