English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La funzione preg_match viene utilizzata per eseguire una corrispondenza con un'espressione regolare.
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).
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.
<?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 )