preg_match — wykonuje pasujące wyrażenia regularne
Parametry
- pattern
-
Wzorzec do wyszukiwania, jako ciąg znaków.
- subject
-
ciąg wejściowy.
- matches
-
Jeśli dopasowóje się, jest on wypełniany wynikami wyszukiwania. $matches[0] będzie zawierał tekst, który w pełni odpowiada wzorcowi, $matches [1] będzie miał tekst, który pasuje pierwszemu przejentemu podwzorcowi, i tak dalej.
- flags
flagi mogą być następujące: -
- PREG_OFFSET_CAPTURE
- If this flag is passed, for every occurring match the appendant string offset will also be returned. Note that this changes the return value in an array where every element is an array consisting of the matched string at index 0 and its string offset into subject at index 1.
- offset
- Normalnie, wyszukiwanie rozpoczyna się od początku a}cucha ynakw. Opcjonalny parametr offset moe być wykorzystanz, aby określić miejsce, z którego ma si roypocy wzsyukiwanie (w bajtach).
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>
Powyższy przykład wyświetli:
Array
(
)podczas gdy np
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
będzie produkowaćArray
(
[0] => Array
(
[0] => def
[1] => 0
)
)
Zwracane wartości
preg_match () zwraca ile razy dopasowano wzór. Będzie albo 0 (nie pasuje) lub 1 raz, ponieważ preg_match () zatrzyma wyszukiwanie po pierwszym dopasowaniu. preg_match_all () wręcz przeciwnie będzie w dalszym ciągu dopasowywał aż do końca ciągu. preg_match () zwraca FALSE jeśli wystąpił błąd.
Listing
//Example #1 Znajdź ciąg tekstu "php"
<?php
// "i" po strukturze separator wskazuje na wielkość znaków wyszukiwania
if (preg_match("/php/i", "PHP jest webowym językiem skryptowym wyboru.")) {
echo "dopasowanie zostało znalezione.";
} else {
echo "dopasowanie nie zostało znalezione.";
}
?>
//Example #2 znajdź słowo "web"
<?php
/* \b w strukturze oznacza słowo granicy, a więc tylko odrębne
* słowo "web" jest pasujące, i nie pasuje słowo typu "webbing" lub "cobweb" */
if (preg_match("/\bweb\b/i", "PHP jest webowym językiem skryptowym wyboru.")) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
if (preg_match("/\bweb\b/i", "PHP jest webowym językiem skryptowym wyboru.")) {
echo "dopasowanie zostało znalezione.";
} else {
echo "dopasowanie nie zostało znalezione.";
}
?>
Example #3 pobranie nazwy domeny z adresu URL
<?php
// pobranie nazwy hosta z adresu URL
preg_match('@^(?:http://)?([^/]+)@i',
"http://www.funkcje.net/index.html", $matches);
$host = $matches[1];
// pobranie dwóch ostatnich segmentó nazwy hosta
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>
//Powyższy przykład wyświetli:
domena to : funkcje.net
//Example #4 użycie nazwy podwzorca
<?php
$str = 'foobar: 2008';
preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>
//Powyższy przykład wyświetli:
Array
(
[0] => foobar: 2008
[name] => foobar
[1] => foobar
[digit] => 2008
[2] => 2008
)
Ranga: Administrator serwisu Punktów: 0