Regulární výrazy PHP
Co je regulární výraz?
Regulární výraz je posloupnost znaků, která tvoří vyhledávací vzor. Když vyhledáváte data v textu, můžete tento vyhledávací vzor použít k popisu toho, co hledáte.
Regulární výraz může být jeden znak nebo složitější vzor.
Regulární výrazy lze použít k provádění všech typů operací hledání a nahrazování textu.
Syntax
V PHP jsou regulární výrazy řetězce složené z oddělovačů, vzoru a volitelných modifikátorů.
$exp = "/w3schools/i";
Ve výše uvedeném příkladu /
je oddělovač , w3schools je vzor , který se hledá, a i
je to modifikátor , díky kterému se při vyhledávání nerozlišují malá a velká písmena.
Oddělovačem může být jakýkoli znak, který není písmenem, číslicí, zpětným lomítkem nebo mezerou. Nejběžnějším oddělovačem je lomítko (/), ale pokud váš vzor obsahuje lomítka, je vhodné zvolit jiné oddělovače, jako je # nebo ~.
Funkce regulárních výrazů
PHP poskytuje řadu funkcí, které vám umožňují používat regulární výrazy. Funkce
preg_match()
, preg_match_all()
a preg_replace()
jsou některé z nejčastěji používaných:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Použití preg_match()
Funkce preg_match()
vám řekne, zda řetězec obsahuje shodu se vzorem.
Příklad
Použijte regulární výraz k vyhledávání „w3schools“ v řetězci bez ohledu na velikost písmen:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Použití preg_match_all()
Funkce preg_match_all()
vám řekne, kolik shod bylo nalezeno pro vzor v řetězci.
Příklad
Použijte regulární výraz k počítání počtu výskytů „ain“ v řetězci bez ohledu na velikost písmen:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
Použití preg_replace()
Funkce preg_replace()
nahradí všechny shody vzoru v řetězci jiným řetězcem.
Příklad
Použijte regulární výraz bez ohledu na velikost písmen k nahrazení Microsoftu výrazem W3Schools v řetězci:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Outputs "Visit
W3Schools!"
?>
Modifikátory regulárních výrazů
Modifikátory mohou změnit způsob provádění vyhledávání.
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
Vzory regulárních výrazů
Závorky se používají k nalezení řady znaků:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Metaznaky
Metaznaky jsou znaky se zvláštním významem:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
Kvantifikátory
Kvantifikátory definují množství:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Poznámka: Pokud váš výraz potřebuje vyhledat jeden ze speciálních znaků, můžete je ukončit pomocí zpětného lomítka ( \ ). Například pro hledání jednoho nebo více otazníků můžete použít následující výraz: $pattern = '/\?+/';
Seskupování
Pomocí závorek ( )
můžete použít kvantifikátory na celé vzory. Lze je také použít k výběru částí vzoru, které se mají použít jako zápas.
Příklad
Pomocí seskupení vyhledejte slovo „banán“ vyhledáním slova ba následovaného dvěma výskyty na :
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Kompletní reference RegExp
Úplnou referenci najdete v naší kompletní referenční příručce o regulárních výrazech PHP .
Odkaz obsahuje popisy a příklady všech funkcí regulárních výrazů.