PHP è ben orientato all'elaborazione delle informazioni. La sintassi del linguaggio è rappresentata da un set completo di funzioni di confronto, elaborazione di stringhe e operatori di confronto.
Qualsiasi algoritmo è una sequenza di scelte eazione. Ma prima di fare una scelta, devi confrontare qualcosa con qualcosa. Le stringhe sono il meccanismo più capiente, efficiente e pratico per controllare l'algoritmo. Le stringhe sono una variante della presentazione dei dati. E i dati sono la principale "preoccupazione" di qualsiasi algoritmo.
Logica convenzionale di confronto-azione
In generale, un linguaggio di digitazione dinamico non lo èfa differenze speciali nei dati, ad esempio, in PHP il confronto tra una stringa e un numero non è molto diverso. Un numero è anche una stringa, quando contiene solo numeri, un punto e non c'è un singolo carattere che non sia utilizzato per rappresentare un numero in nessuna delle sue forme (notazione matematica).
Nel caso del contenuto, il numero viene automaticamente unito alla stringa senza domande inutili e senza errori nascosti, anche se la funzione gettype () fornisce "integer" o "double".
Tuttavia, c'è una differenza tra l'utilizzo della funzioneis_int () e is_numeric (). Il primo è vero quando il parametro è solo un numero intero, il secondo quando è un numero qualsiasi o una stringa numerica (la variabile è di tipo "stringa", ma contiene tutto ciò che è fornito dalla notazione matematica).
Questo semplice esempio è un buon esempio, come in PHPGli operatori di confronto tra stringhe ("==", "===", "! =", ...) possono darti molte sorprese. Le variabili possono cambiare il loro tipo, non sono sempre numeri, ma quasi sempre possono essere convertite in una stringa. Come ultima risorsa, sarà una stringa vuota.
Sulla base di ciò, la funzione di confronto delle stringhe di PHP è la più popolare. Quale scegliere dipende dallo sviluppatore. Sono disponibili tantissime opzioni, fino alle espressioni regolari.
I confini delle funzionalità disponibili
PHP che confronta due stringhe fa un buon lavorostrpos () è l'opzione più economica, sicura e pratica. Se il risultato di questa funzione è un numero, una stringa è uguale a un'altra o una è inclusa in un'altra.
Un approccio radicalmente opposto, ma anche assolutamente corretto, è l'uso delle espressioni regolari.
Se la funzione chiama $ cResult =scCheckFileName ($ cStr) restituirà "true", il che significa che la stringa è il nome del file di Word. Avrà solo una variante dell'estensione ".docx" e nessun carattere nel nome: solo lettere, numeri e segni "_", "-".
La funzione può essere facilmente convertita in altrotipi di file: $ cPtr = "/ ^ ([a-zA-Z ... 0-9 -_> [4,239]]). (html | js | css | png | jpg | docx | txt) * u ". Questa opzione di controllo della stringa espande l'intervallo di caricati (ad esempio, in PHP, il confronto delle stringhe viene applicato "per caricare file sul server, senza una sola possibilità di errore di input") a html, js, css, ...
Usando strpos () e preg_match () -estremi. Non sono direttamente collegati alla questione del confronto dei termini. Ma la questione dell'algoritmo consiste nell'applicare una combinazione di stili, utilizzando tutte le possibilità per ottenere un risultato affidabile e corretto.
Funzionalità PHP: confronto di stringhe
L'arsenale della lingua contro gli archi non è solofunzioni di confronto pure, ma anche una combinazione con trova o sostituisci direttamente. L'azione non deve essere sempre uguale al confronto, poiché quest'ultimo non porta necessariamente a una modifica in nessuna riga. Spesso è necessario selezionare l'uno o l'altro ramo dell'algoritmo.
La solita versione PHP: il confronto delle stringhe viene eseguito dalla funzione int strcmp (s1, s2).
Risultato della funzione:
- 0 - le stringhe sono uguali;
- -1 - la prima riga è minore della seconda;
- 1 - la prima riga è più grande della seconda.
In pratica, questo significa che entra il primostringa nel secondo, da cui la funzione PHP (confronto di stringhe) prende una decisione. Una versione più limitata di strpos(), poiché in quest'ultimo caso è possibile conoscere la posizione dell'occorrenza.
La funzione strcmp() fa distinzione tra maiuscole e minuscole. Se è necessario confrontare le stringhe senza distinzione tra maiuscole e minuscole, PHP suggerisce di utilizzare strcasecmp(). La sintassi è la stessa.
In pratica, spesso è necessario lavorare non con tuttistringa, ma solo con una parte di essa. Per fare ciò, il set di funzioni PHP (confronto di stringhe) include strncmp (s1, s2, N). Il terzo parametro indica di eseguire il confronto solo di N-byte. Il risultato è lo stesso di strcmp().
Array, stringhe e confronto
I dati sono quasi sempre rappresentati come stringhe. Se consideriamo array, oggetti o strutture di informazione, allora queste sono semplicemente diverse combinazioni di strutture di stringhe più semplici.
Gli array di stringhe e le stringhe possono esserepresentati in maniera complementare. Trasformare un array in una stringa utilizzando la funzione implode (array, symbol), ad esempio: $ margins1 = implode (",", $ style-> getInnerMargin()); ... il lavoro dell'algoritmo / utente ...; $ margins2 = implode (",", $ style-> getInnerMargin()) ti permette di unire tutte le posizioni degli oggetti in una stringa di posizione.
Puoi quindi fare un confronto di stringhe PHP e inuna volta: $ check = strcmp ($ margins1, $ margins2) e controlla se l'algoritmo o l'utente ha cambiato qualcosa (o no). Se esegui il confronto nel solito modo, dovrai iterare sugli elementi degli array. Ci vuole più tempo e sembra più ingombrante.
Oggetti e stringhe
Un uso ancora più spettacolare di PHP (confronto di stringhe) può essere realizzato attraverso idee orientate agli oggetti.
Comprensione moderna degli oggettipresuppone che abbiano proprietà e metodi. I primi sono generalmente rappresentati da numeri, stringhe, array e altri oggetti. Questi ultimi spesso includono metodi per scrivere (put) su una stringa e ripristinare da una stringa (get).
A differenza degli array, un oggetto funziona conle sue proprietà e interagisce con altri oggetti. L'oggetto è "competente" in ciò che le sue proprietà hanno un significato reale per l'algoritmo, il programma nel suo insieme.
Questo momento fornisce una base e un'opportunità perregistrare solo le informazioni necessarie nella stringa e, durante il ripristino dalla stringa, ripristinare tutte le proprietà di lavoro allo stato desiderato. Di solito in qualsiasi oggetto ci sono informazioni essenziali e funzionanti (temporanee). L'implementazione di questa idea consente di salvare non solo memoria, spazio su disco, record di database, ma consente anche di confrontare le stringhe con mezzi più semplici e precisi.
Sintassi e semantica
PHP si sta sviluppando in modo dinamico e le sue funzionalità sono entrambe insia in termini di confronto delle stringhe che in termini di loro elaborazione è in costante miglioramento. Tuttavia, nulla impedisce allo sviluppatore di spostare il baricentro sulla semantica.
Indubbiamente, la funzionalità è buona, ma èl'uso può essere trasferito alla parte semantica del codice, agli oggetti. Quando un algoritmo viene presentato come un sistema di interazione di oggetti, sembra molto meglio di una sequenza di confronti e azioni in uno stile classico e sequenziale semplice.