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

Tutorial di base di PHP

Tutorial avanzato di PHP

PHP & MySQL

Manuale di riferimento di PHP

Uso e esempio della funzione preg_match_all di PHP

PHP 正则表达式(PCRE)

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

Sintassi

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).

Valore di ritorno

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>

PHP 正则表达式(PCRE)