Delimiters
Any character can be used as a delimiter. Every metacharacter represents a single character in the matched expression.
echo preg_match("/[a-z]/", "abcde"); // common delimiter
echo preg_match("&[a-z&]&", "abcde"); // escaped delimiter
echo preg_match("/./", "abc"); // true
// match any character
echo preg_match("/^bc/", "abc"); // false
// match start of the string, then match b, match c
echo preg_match("/c$/", "abc"); // 1
// c, end of the string
$str = '
PHP allowed variable names: $a, $_b, $a10, $A, $_
PHP not allowed: $1, $-'
;
$flag = preg_match('/[$][a-zA-Z_][A-Za-z_0-9]*/', $str};
var_dump($flag); // int 1
Multiple
You can perform multiple matches on a given string using preg_match_all()
$matches = array();
if (preg_match_all("/([abc])\d/", "a1bb b2cc c3dd", $matches)) {
var_dump($matches);
// [0] => a1, b2, c3
// [1] => a, b, c
}
Replace
You can replace text that matches a pattern. It is even possible to reuse captured subpatterns directly in the substitution string.
echo preg_replace("/a/", "x", "abc"); // xbc
echo preg_replace("/a{2}/", "x", "abaac"); // abxc
$str = "XabcX";
$pattern = "/X(.*)X/";
preg_match($pattern, $str, $matches);
var_dump($matches); //[1] => "abc"
$replace = preg_replace($pattern, "Y $1 Y", $str);
echo $replace; // Y abc Y
We can also pass in an array of subjects.
Regular expression (or expressions) are compiled once and reused multiple times.
$array = array("[b]abc[/b]", "[i]abc[/i]");
$result = preg_replace(
array(
"|[b](.*)[/b]|",
"|[i](.*)[/i]|",
),
array(
"<b>$1</b>",
"<i>$1</i>",
),
$array
);
print_r($array); // [0] => [b]abc[/b] [1] => [i]abc[/i]
print_r($result); // [0] => <b>abc</b> [1] => <i>abc</i>
Search array
Search in an array with regex.
$haystack = array (
'say hello',
'hello minte9',
'hello world',
'foo bar bas'
);
$matches = preg_grep ('/^hello (\w+)/', $haystack);
var_dump($matches);
//Array ( [1] => hello minte9 [2] => hello world )
Last update: 396 days ago