English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Manuale di base PHP

Manuale avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Uso e esempio della funzione PHP preg_match()

PHP Esercizio Regolare (PCRE)

La funzione preg_match viene utilizzata per eseguire una corrispondenza con un'espressione regolare.

Sintassi

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Cerca una corrispondenza tra subject e il pattern fornito come espressione regolare.

Descrizione dei parametri:

  • $pattern: Modello da cercare, in forma di stringa.

  • $subject: Stringa di input.

  • $matches: Se viene fornito il parametro matches, verrà riempito con i risultati della ricerca. $matches[0] conterrà il testo corrispondente al modello completo, $matches[1] conterrà il testo corrispondente al primo gruppo catturato, ecc.

  • $flags: I flags possono essere impostati sui seguenti valori di etichetta:

  • PREG_OFFSET_CAPTURE: Se viene passata questa etichetta, per ogni occorrenza restituita verrà aggiunta la stringa di offset (rispetto alla stringa di destinazione). Attenzione: questo cambierà l'array riempito nel parametro matches, rendendo ogni elemento un array che contiene il primo elemento è la stringa corrispondente trovata, il secondo elemento è l'offset della stringa corrispondente nella stringa subject.

  • offset: Di solito, la ricerca inizia dalla posizione iniziale della stringa di destinazione. Il parametro opzionale offset viene utilizzato per specificare una ricerca a partire da una posizione sconosciuta della stringa di destinazione (in unità di byte).

Valore di ritorno

Restituisce il numero di corrispondenze del modello. Il valore sarà 0 volte (non corrisponde) o 1 volta, perché preg_match() si fermerà dopo la prima corrispondenza. preg_match_all() è diverso, continuerà a cercare nell'oggetto subject fino alla fine. In caso di errore preg_match() restituirà FALSE.

Esempio online

<?php
// Il carattere "i" dopo il simbolo di separazione del modello indica una ricerca insensibile alle maiuscole e minuscole
if (preg_match("/php/i", "PHP è il linguaggio di scripting web di scelta.")) {
    echo "Trovata la stringa corrispondente php.";
} else {
    echo "Non è stata trovata la stringa corrispondente php.";
}
?>

I risultati dell'esecuzione sono illustrati di seguito:

Trovato la stringa corrispondente php。

<?php
/* Il simbolo \b segna un confine di parola, quindi verrà matchato solo il vocabolo "web" isolato, non quello che segue.
 * Contenuto parziale della parola come "webbing" o "cobweb" */
if (preg_match("/\bweb\b/i", "PHP è il linguaggio di scripting web di scelta.")) {
    echo "Trovata una stringa corrispondente.\n";
} else {
    echo "Non è stato trovato una stringa corrispondente.\n";
}
if (preg_match("/\bweb\b/i", "PHP è il linguaggio di scripting web di scelta.")) {
    echo "Trovata una stringa corrispondente.\n";
} else {
    echo "Non è stato trovato una stringa corrispondente.\n";
}
?>

I risultati dell'esecuzione sono illustrati di seguito:

Trovata una stringa corrispondente.
Non è stato trovato una stringa corrispondente.

<?php
// Ottenere il nome dell'host dall'URL
preg_match('@^(?:http://)?([^/]+)@i',
    "http://it.oldtoolbag.com/index.html", $matches);
$host = $matches[1];
// Ottenere le due parti posteriori del nome dell'host
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Il nome dominio è: {$matches[0]}\n";
?>

I risultati dell'esecuzione sono illustrati di seguito:

Il nome dominio è: oldtoolbag.com

<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* Gli esempi seguenti funzionano con php 5.2.2(pcre 7.0) o versioni successive, tuttavia, per la retrocompatibilità, il modo sopra indicato è il metodo consigliato. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>

I risultati dell'esecuzione sono illustrati di seguito:

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

PHP Esercizio Regolare (PCRE)