php - preg_grep - preg_match_all online
PHP preg_match y preg_match_all funciones (4)
El manual de PHP puede ayudarte.
Háganos saber si tiene problemas para entender.
Me gustaría saber qué hacen las funciones preg_match
y preg_match_all
y cómo usarlas.
Tanto las funciones preg_match como http://php.net/manual/en/function.preg-match-all.php en PHP usan expresiones regulares compatibles con Perl.
Puede ver esta serie para comprender completamente las expresiones regulares compatibles con Perl: https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w
preg_match ($ patrón, $ sujeto, & $ coincidencias, $ banderas, $ compensación)
La función preg_match
se usa para buscar un $pattern
particular en una cadena $subject
y cuando se encuentra el patrón la primera vez, deja de buscarlo. Produce coincidencias en las $matches
, donde $matches[0]
contendrá el texto que coincide con el patrón completo, $matches[1]
tendrá el texto que coincidirá con el primer sub-patrón entre paréntesis capturado, y así sucesivamente.
Ejemplo de preg_match()
<?php
preg_match(
"|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$matches
);
var_dump($matches);
Salida:
array(2) {
[0]=>
string(16) "<b>example: </b>"
[1]=>
string(9) "example: "
}
preg_match_all ($ patrón, $ sujeto, & $ coincidencias, $ banderas)
La función preg_match_all
busca todas las coincidencias en una cadena y las genera en una matriz multidimensional ( $matches
) ordenadas de acuerdo con $flags
. Cuando no se pasa el valor de $flags
, ordena los resultados para que $matches[0]
sea una matriz de coincidencias de patrones completos, $matches[1]
sea una matriz de cadenas que $matches[1]
con el primer sub-patrón entre paréntesis, y así sucesivamente.
Ejemplo de preg_match_all()
<?php
preg_match_all(
"|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$matches
);
var_dump($matches);
Salida:
array(2) {
[0]=>
array(2) {
[0]=>
string(16) "<b>example: </b>"
[1]=>
string(36) "<div align=left>this is a test</div>"
}
[1]=>
array(2) {
[0]=>
string(9) "example: "
[1]=>
string(14) "this is a test"
}
}
Un ejemplo concreto:
preg_match("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => find me
[1] => me
)
preg_match_all("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => Array
(
[0] => find me
[1] => find me
)
[1] => Array
(
[0] => me
[1] => me
)
)
preg_grep("/find[ ]*(me)/", ["find me find me", "find me findme"]):
$matches = Array
(
[0] => find me find me
[1] => find me findme
)
preg_match
deja de cuidar el primer partido. preg_match_all
, por otro lado, continúa buscando hasta que termina de procesar toda la cadena. Una vez que se encuentra la coincidencia, utiliza el resto de la cadena para intentar aplicar otra coincidencia.