3 commenti php

Le funzioni per gestire le stringhe sono relativamente numerose in virtù dei numerosi ambiti di applicazione e dei vari controlli e filtri che vi vuol fare su questo dato. Quelle proposte sono solo alcune delle principali e più impiegate.

 

LA FUNZIONE STRLEN()

Prende come input una stringa e restituisce un numero intero pari al numero di caratteri che la compone; considera anche gli spazi. Un uso tipico di tale funzione è per verificare la lunghezza di una password e mostrare un errore qualora quella scelta è troppo breve:

<?php
if(isset($_POST['invio']))
   {
   // fissiamo la lunghezza minima
   $lunghezza_min = 8;

   if(strlen($_POST['valore'])<$lunghezza_min)
      {
      echo "La password scelta è troppo corta";
      }
   else
      {
      echo "La passwrod scelta va bene";
      }
   }
?>
<form action="" method="post">
<p>Scegli la password</p>
<input type="text" name="valore" />
<input type="submit" name="invio" value="Invia" />
</form>

 

 

LE FUNZIONI TRIM(), LTRIM(), RTRIM()

Prendono come input una stringa e restituiscono la medesiam stringa eliminandone eventuali spazi: trim() elimina gli spazi iniziali e finali; mentre ltrim() solo quelli iniziali (la "l" sta per left); rtrim() solo quelli finali (la "r" sta per right).
Tale funzone è tipicamente usata per eliminare gli spazi vuoti lasciati dagli utenti ad inizio o fine degli input inviati tramite i form. 
Riprendendo il precedente esempio potremo calcolare la lunghezza della password escludendone eventuali spazi vuoti iniziali o finali e pertanto la condizione verrà modificata in tal modo:

if(strlen(trim($_POST['valore']))<8)

 

 

LA FUNZIONE SUBSTR()

Serve per ottenere una porzione di una stringa. Prende come input tre parametri:

  • il primo parametro è la stringa di cui si desidera estrarre una porzione; 
  • il secondo parametro ci indica l'inizio della porzione da estrarre (i caratteri vengono conteggiati a partire da zero); 
  • il terzo parametro è opzionale e ci indica il numero di caratteri che si desidera estrarre; potrà assumere valori negativi escludendo in tal caso i caratteri a partire dall'ultimo.


Facciamo qualche esempio:

<?php
$stringa = 'miniscript';

$sub1 = substr($stringa, 3); // otteniamo 'script' (esclude i primi 4)
$sub2 = substr($stringa, 0, 3); // otteniamo 'mini' (parte dal primo fino al 4°)
$sub3 = substr($stringa, 2, -1); // otteniamo 'niscrip' (parte dal 3° ed arriva fino al penultimo)
?>

 

 

LE FUNZIONI STR_REPLACE(), STR_IREPLACE()

Serve per effettuare sostituzioni di caratteri all'interno di una stringa. Prende come input tre parametri:

  • il primo parametro è la stringa dei caratteri che si intende sostituire;
  • il secondo parametro è la stringa (anche vuota) che si intende rimpiazzare;
  • il terzo parametro è la stringa sulla quale si intende operare la sostituzione.

 

Facciamo un esempio:

<?php
$nome = 'megascript';

$cerca = 'mega';
$sostituisci = 'mini';

// sostituisce 'mega' con 'mini' nella stringa 'megascript' 
$risultato = str_replace($cerca, $sostituisci, $nome);

// si stamperà 'miniscript'
echo $risultato;
?>

 

Il primo e/o secondo parametro possono essere degli array.
Nel caso in cui primo è un array e il secondo è una stringa si avrà:

<?php
$stringa = 'ciao';

$cerca = array('a', 'e', 'i', 'o', 'u');
$sostituisci = '#';

// sostituirà tutte le vocali con il cancelletto
$risultato = str_replace($cerca, $sostituisci, $stringa);

// stamperà c###
echo $risultato;
?>

 

Nel caso in cui entrambi sono degli array questi dovranno avere la medesima dimensione e si avrà:

<?php
$stringa = 'ciao';

$cerca = array('a', 'e', 'i', 'o', 'u');
$sostituisci = array('A', 'E', 'I', 'O', 'U');

// sostituirà tutte le vocali con le rilative vocali maiuscole
$risultato = str_replace($cerca, $sostituisci, $stringa);

// stamperà cIAO
echo $risultato;
?>

 

La funzione str_ireplase è analoga solo non distinguerà maiuscole da minuscole (non è case sensitive). Essa richiede le ultime versioni di php (php 5).

 

 

LA FUNZIONE STRPOS()

Serve per individuare la posizione della seconda stringa all'interno della prima. Restituisce il numero indicante la posizione se questa viene individuata, al contrario restituirà un valore boleano FALSE.

<?php
$stringa = 'miniscript';

$cerca = 'ni';
$risultato = strpos($stringa, $cerca);

// stamperà a video 2
echo $risultato;
?>

 

 

LE FUNZIONI STRSTR(), STRISTR()

La funzione accetta due parametri: entrambi delle stringhe. Essa cercherà la seconda stringa all'interno della prima restituendo la porzione di stringa a partire dalla stringa trovata.

<?php
$stringa = 'miniscript';

$cerca ='ni';

// si stamperà 'niscript' 
echo strstr($stringa, $cerca);
?>

 

 

LE FUNZIONI STRTOLOWER(), STRTOUPPER(), UCFIRST(), UCWORDS()

Tali funzioni prendono come unico parametro una stringa e servono per gestire i caratteri maiuscoli e minuscoli delle stringhe: 

  1. strtolower(): converte la stringa tutto in minuscolo;
  2. strtoupper(): converte la stringa tutto in maiuscolo;
  3. ucfirst(): converte la prima lettera della stringa in maiuscolo;
  4. ucwords(): converte tutte le prime lettere delle parole che compongono la stringa in maiuscolo.

 

Un uso tipico di strtolower() si ha in caso di salvataggio degli indirizzi email: essi non sono case sensitive (non distinguono maiuscole da minuscole) e pertanto quando viene trattato tale dato può essere opportuno convertirlo in minuscolo.

<?php
$email = 'UTENTE@EMAIL.IT';

// stamperà a video 'utente@email.it'
echo strtolower($email);
?>

 

 

LA FUNZIONE EXPLODE()

La funzione explode() trasforma una stringa in un array. Essa riceve due parametri obbligatori: il primo è una stringa e il secondo è i o il carattere separatore. Essa darà come return un array contenente i singoli elementi della stringa. Guardondo l'esempio sarà tutto più chiaro:

<?php
$stringa = 'ciao|buongiorno|arrivederci';

$saluti = explode('|', $stringa);

print_r($saluti);
?>

 

 

LE FUNZIONI ADDSLASHES() E STRIPSLASHES()

Tali funzioni servono per gestire un'operazione che viene definita 'escape delle stringhe' che è necessaria qualora si opera con un database MySql o in alcune interazioni con javascript.

La funzione addslashes() accetta come parametro una stringa e la restituisce anteponendo il sibolo backslash ai caratteri " ' e NULL.

La funzione stripslashes() è inversa rispetto ad addslashes(): rimuove i backslashes anteposti ai caratteri " ' e NULL.

<?php
$stringa = 'virgolette ", apici \',  e il valore NULL';

echo addslashes($stringa);
echo stripslashes($stringa);
?>

 

 

LA FUNZIONE STRIP_TAGS()

La funzione strip_tags accetta due parametri il primo è una stringa mentre il secondo, opzionale, e una serie di tag. Essa restituisce la stringa priva dei tag; con il secondo parametro è possibile impostare i tag che si desidera conservare. Facciamone un esempio:

<?php
$stringa = '<p style="color:red;">paragrafo</p> e <strong>grassetto</strong> in una stringa';

echo $stringa;

echo strip_tags($stringa); // rimuoviamo tutti i tag
echo strip_tags($stringa, '<strong>'); // rimuoviamo tutti i tag eccetto <strong>
?>

 

 

LE FUNZIONI HTMLENTITIES() E HTML_ENTITY_DECODE()

La funzione htmlentities() converte i caratteri speciali (ad esempio: < > " ' à è ì ò ù) nelle relative entità html.
Essa accetta tre parametri:

  • il primo è la stringa da convertire;
  • il secondo è una costante che può assumere come valore tre costanti ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES;
  • il terzo è una stringa indicante il set di caratteri da utilizzare (detto charset).


Il secondo parametro determina il diverso trattamento degli apici e delle virgolette:

  • ENT_COMPAT: è valore di default, non converte gli apici singoli.
  • ENT_QUOTES: converte sia degli apici singoli che dei doppi apici.
  • ENT_NOQUOTES: non converte nè gli apici nè le virgolette.


Con riferimento al terzo parametro i più diffusi sono "UTF-8" e "ISO-8859-1". In particolar modo "ISO-8859-1" può essere utile nel caso di una errata visualizzazione delle lettere accentate in quanto esse vengono trasformate nella relativa entità html (ma la questione è molto più complessa).


Un impiego di tale funzione si ha quando all'interno della stringa può esserci del codice (html, javarscipt, php, etc.) che si desideri compaia a video così come scritto e che non sia interpretato come un tag della pagina corrente.

<?php 
$accentate = 'èìòàù';

// le lettere accentate e i tag saranno convertite nella relativa entità hmtl
// è => &egrave;
echo htmlentities($accentate, ENT_COMPAT, 'ISO-8859-1');

$codice_html = '<h1>miniscript</h1>';

// il tag h1 verrà stampato a video
echo htmlentities($codice_html);
?>

 

La funzione html_entity_decode() è inversa rispetto ad htmlentities(): essa riceve gli stessi parametri.

 

Vai alla lezione successiva

Vai alla lezione precedente

Olimpio Romanella

Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.

Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.

3 Commenti presenti

avatar must

must

08 April 2014 ore 10:27

ciao, nella funzione substr(), col primo esempio, il risultato non dovrebbe essere 'iscript'?

avatar Olimpio Romanella

Olimpio Romanella

12 February 2014 ore 18:40

@Roberto: cosa intendi quando dici che "la funzione strip_tags me lo impedisce"?

avatar Roberto

Roberto

12 February 2014 ore 17:03

complimenti per l'articolo molto interessante, a proposito delle funzioni ti voglio chiedere una cossa; sto sviluppo il mio primo cms in php/mysql,voglio inserire all'interno degli articoli che creo del codice html ma la funzione strip_tags me lo impedisce. A logica devo sostituire questa porzione di codice:
<div>
<?php echo strip_tags(nl2br($item->getText()),
"<p><br><img><h2><h3><h4><strong><em><ul><ol><li><a>"); ?>
</div>

quale funzione posso utilizzare per inserire dell'html nei miei articoli?
grazie in anticipo,
Roberto