Forum und email

preg_match

(PHP 4, PHP 5)

preg_match — Reguláris kifejezést illeszt a megadott szövegre

Leírás

int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )

A subject szövegben egyezést keres a pattern mintában megadott reguláris kifejezéssel.

A matches paraméterrel meghívva a keresés végeredményét ebbe a tömbbe tárolja el a függvény. A $matches[0] tartalmazza azt a szövegrészt, ami a teljes mintára illeszkedett, és a további elemek ($matches[1] és így tovább) azokat, amelyek a tömbindex szerinti "gyűjtő" részmintákra illeszkedtek.

A flags paraméter az alábbi értékeket veheti fel::

PREG_OFFSET_CAPTURE
Minden egyezéshez az egyezés kezdőpozicióját is visszaadja az eredményben. Ez maga után vonja, hogy a visszaadott tömb minden eleme olyan tömb lesz, amelynek a 0. indexe az illeszkedő szöveget tartalmazza, míg az 1. indexen levő elem ennek a subject -en belüli kezdőpozicióját. Ez a jelzőbit PHP 4.3.0 verziójától használható.

A preg_match() a pattern talált egyezések számával tér vissza, azaz 0-val, ha nem volt egyezés, vagy 1-gyel, mert a preg_match() az első egyezés után megáll. A preg_match_all() függvény ellenben a subject végéig folytatja a keresést és az illesztést. A preg_match() FALSE-t ad vissza hiba esetén.

Example#1 A "php" sztring keresése

// az "i" a minta határolójele után azt jelzi,
// hogy a kis- és nagybetűkre közömbös a keresés.
if (preg_match ("/php/i", "PHP a web-scripting nyelvek egyike.")) {
    print "A minta passzol.";
} else {
    print "A minta nem passzol.";
}

Example#2 A "web" szó keresése

// a mintában a \b szóhatárt jelöl, ezért csak a különálló
// "web" szavakra fog illeszkedni, és szórészletekre
// úgymint "webbing" vagy "cobweb" pedig nem.
if (preg_match ("/\bweb\b/i", "PHP a web scripting nyelvek egyike."))
{
    print "A minta passzol.";
} else {
    print "A match nem passzol.";
}
if (preg_match ("/\bweb\b/i", "PHP a website scripting nyelvek egyike.")) {
    print "A minta passzol.";
} else {
    print "A match nem passzol.";
}

Example#3 domain-név kinyerése URL-ből

// gazdagép neve az URL-ből
preg_match("/^(http:\/\/)?([^\/]+)/i",
"https://www.php.net/index.html", $matches);
$host = $matches[2];
// a gazdagépnév utolsó két része
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "A domain név : ".$matches[0]."\n";
Ez a példa a következőt eredményezi:
A domain név : php.net

Lásd még: preg_match_all(), preg_replace() és preg_split()!