UNPKG

manual-php

Version:
192 lines (146 loc) 6.51 kB
# 正则表达式 * [preg_filter - 执行一个正则表达式搜索和替换](#pregfilter) * [preg_grep - 返回匹配模式的数组条目](#preggrep) * [preg_last_error - 返回最后一个正则表达式执行产生的错误代码](#preglasterror) * [preg_match_all - 执行一个全局正则表达式匹配](#pregmatchall) * [preg_match - 执行匹配正则表达式](#pregmatch) * [preg_quote - 转义正则表达式字符](#pregquote) * [preg_replace_callback_array - 执行一个正则表达式搜索并且使用一个回调进行替换](#pregreplacecallbackarray) * [preg_replace_callback - 执行一个正则表达式搜索并且使用一个回调进行替换](#pregreplacecallback) * [preg_replace - 执行一个正则表达式的搜索和替换](#pregreplace) * [preg_split - 通过一个正则表达式分隔字符串](#pregsplit) ## preg_filter ```php <?php var_dump(preg_filter('/\d/', '.$0', 233)); // string(6) ".2.3.3" var_dump(preg_filter('/[a-z]/', '.$0', 233)); // NULL var_dump(preg_filter('/[a-z]/', '.${0}', 'foo')); // string(6) ".f.o.o" ``` ## preg_grep ```php <?php var_dump(preg_grep('/[a-z]+/', ['foo', 'bar', 'baz'])); // array(3) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" } var_dump(preg_grep('/^\d+?\.\d+$/', [.1, 22.21, 3])); // array(2) { [0]=> float(0.1) [1]=> float(22.21) } ``` ## preg_last_error ```php <?php var_dump(preg_last_error()); // int(0) ``` ## preg_match_all ```php <?php var_dump(preg_match_all('/foo/', 'bar', $matches)); // int(0) var_dump($matches); // array(1) { [0]=> array(0) { } } var_dump(preg_match_all('/(foo)(bar)(baz)/', 'foobarbaz', $matches)); // int(1) var_dump($matches); // array(4) { [0]=> array(1) { [0]=> string(9) "foobarbaz" } [1]=> array(1) { [0]=> string(3) "foo" } [2]=> array(1) { [0]=> string(3) "bar" } [3]=> array(1) { [0]=> string(3) "baz" } } var_dump(preg_match_all('/(\d+)/', 233, $matches)); // int(1) var_dump($matches); // array(2) { [0]=> array(1) { [0]=> string(3) "233" } [1]=> array(1) { [0]=> string(3) "233" } } var_dump(preg_match_all('/([a-z]+)/', 'foo', $matches)); // int(1) var_dump($matches); // array(2) { [0]=> array(1) { [0]=> string(3) "foo" } [1]=> array(1) { [0]=> string(3) "foo" } } var_dump(preg_match_all('/([a-z]+)/i', 'FOO', $matches)); // int(1) var_dump($matches); // array(2) { [0]=> array(1) { [0]=> string(3) "FOO" } [1]=> array(1) { [0]=> string(3) "FOO" } } var_dump(preg_match_all('/[a-z][a-z][a-z]/', 'foo', $matches)); // int(1) var_dump($matches); // array(1) { [0]=> array(1) { [0]=> string(3) "foo" } } ``` ## preg_match ```php <?php var_dump(preg_match('/foo/', 'bar')); // int(0) var_dump(preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches)); // int(1) var_dump($matches); // array(4) { [0]=> string(9) "foobarbaz" [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" } var_dump(preg_match('/(\d+)/', 233, $matches)); // int(1) var_dump($matches); // array(2) { [0]=> string(3) "233" [1]=> string(3) "233" } var_dump(preg_match('/([a-z]+)/', 'foo', $matches)); // int(1) var_dump($matches); // array(2) { [0]=> string(3) "foo" [1]=> string(3) "foo" } var_dump(preg_match('/([a-z]+)/i', 'FOO', $matches)); // int(1) var_dump($matches); // array(2) { [0]=> string(3) "FOO" [1]=> string(3) "FOO" } var_dump(preg_match('/[a-z][a-z][a-z]/', 'foo', $matches)); // int(1) var_dump($matches); // array(1) { [0]=> string(3) "foo" } ``` ## preg_quote ```php <?php var_dump(preg_quote('$40 *for* a g3/4.00')); // string(23) "\$40 \*for\* a g3/4\.00" ``` ## preg_replace_callback_array ```php <?php /** * Just a test function. * * @param array $matches * @return string */ function foo(array $matches): string { return 'foo'; } var_dump( preg_replace_callback_array( [ '/(\d+)/' => 'foo', '/([a-z+])/' => fn(array $matches): string => strtoupper($matches[1]) ], '233foo' ) ); // string(6) "FOOFOO" ``` ## preg_replace_callback ```php <?php /** * Just a test function. * * @param array $matches * @return string */ function foo(array $matches): string { return 'foo'; } /** * Just a test function. * * @param array $matches * @return string */ function bar(array $matches): string { return strtoupper($matches[1]); } var_dump(preg_replace_callback('/(\d+)/', 'foo', 233)); // string(3) "foo" var_dump(preg_replace_callback('/([a-z]+)/', 'bar', 'foo')); // string(3) "FOO" var_dump( preg_replace_callback( '/([a-z]+)/', function (array $matches): string { return strtoupper($matches[1]); }, 'foo' ) ); // string(3) "FOO" var_dump( preg_replace_callback( '/([a-z]+)/', fn(array $matches): string => strtoupper($matches[1]), 'foo' ) ); // string(3) "FOO" ``` ## preg_replace ```php <?php var_dump(preg_replace('/\d/', '.$0', 233)); // string(6) ".2.3.3" var_dump(preg_replace('/[a-z]/', '.$0', 233)); // string(3) "233" var_dump(preg_replace('/[a-z]/', '.${0}', 'foo')); // string(6) ".f.o.o" var_dump(preg_replace(['/foo/', '/bar/'], ['bar', 'foo'], 'foobar')); // string(6) "foofoo" var_dump(preg_replace('/\s+/', '', 'foo bar baz')); // string(9) "foobarbaz" ``` ## preg_split ```php <?php var_dump(preg_split('/ /', 'f o o')); // array(3) { [0]=> string(1) "f" [1]=> string(1) "o" [2]=> string(1) "o" } var_dump(preg_split('/,/', 'f,o,o')); // array(3) { [0]=> string(1) "f" [1]=> string(1) "o" [2]=> string(1) "o" } var_dump(preg_split('/[\s,]/', 'f o,o')); // array(3) { [0]=> string(1) "f" [1]=> string(1) "o" [2]=> string(1) "o" } ```