English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La funzione preg_match_all viene utilizzata per eseguire una corrispondenza globale con un'espressione regolare.
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
Cerca tutte le corrispondenze della stringa di destinazione che corrispondono al modello di espressione regolare specificato e le esporta in $matches secondo l'ordine specificato da flag.
Dopo aver trovato la prima corrispondenza, la sequenza continua dalla posizione dell'ultima corrispondenza.
Spiegazione dei parametri:
$pattern: Modello da cercare, in forma di stringa.
$subject: Stringa di input.
$matches: Matrice multidimensionale, utilizzata come parametro di output per tutte le corrispondenze trovate, l'ordinamento dell'array è specificato dai flags.
$flags: Può essere combinato con i segni elencati di seguito (attenzione: non possono essere utilizzati contemporaneamente PREG_PATTERN_ORDER e PREG_SET_ORDER):
PREG_PATTERN_ORDER: I risultati sono ordinati in modo che $matches[0] conservi tutte le corrispondenze del modello completo, $matches[1] conservi tutte le corrispondenze del primo gruppo di sottoespressione, e così via.
PREG_SET_ORDER: I risultati sono ordinati in modo che $matches[0] contenga tutte le corrispondenze della prima corrispondenza (inclusi i gruppi di sottoespressione), $matches[1] è l'array che contiene tutte le corrispondenze della seconda corrispondenza (inclusi i gruppi di sottoespressione), e così via.
PREG_OFFSET_CAPTURE: Se questo segno è trasmesso, viene aggiunto l'offset relativo alla stringa di destinazione a ogni corrispondenza trovata.
offset: Di solito, la ricerca parte dalla posizione iniziale della stringa di destinazione. Il parametro opzionale offset viene utilizzato per iniziare la ricerca dalla posizione specificata nella stringa di destinazione (in unità di byte).
Restituisce il numero di corrispondenze complete (può essere 0) o FALSE se si verifica un errore.
<?php
$userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>
执行结果如下所示:
Array ( [0] => <b>PHP</b> [1] => <b>Programming Language</b> )
<?php
//\\2是一个后向引用的示例. 这会告诉pcre它必须匹配正则表达式中第二个圆括号(这里是([\w]+))
//匹配到的结果. 这里使用两个反斜线是因为这里使用了双引号.
$html = "<b>bold text</b><a href=howdy.html>click me</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
?>
执行结果如下所示:
matched: <b>bold text</b> part 1: <b> part 2: b part 3: bold text part 4: </b> matched: <a href=howdy.html>click me</a> part 1: <a href=howdy.html> part 2: a part 3: click me part 4: </a>