PHP 8.5.0 Beta 3 available for testing

RegexIterator クナ゚

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

はじめãĢ

こぎイテãƒŦãƒŧã‚ŋをäŊŋうと、åˆĨぎイテãƒŦãƒŧã‚ŋã‚’æ­ŖčĻčĄ¨įžã§ãƒ•ã‚ŖãƒĢã‚ŋãƒĒãƒŗã‚°ã™ã‚‹ã“ã¨ãŒã§ããžã™ã€‚

クナ゚æĻ‚čρ

class RegexIterator extends FilterIterator {
/* 厚数 */
public const int USE_KEY;
public const int INVERT_MATCH;
public const int MATCH;
public const int GET_MATCH;
public const int ALL_MATCHES;
public const int SPLIT;
public const int REPLACE;
/* ãƒ—ãƒ­ãƒ‘ãƒ†ã‚Ŗ */
public ?string $replacement = null;
/* ãƒĄã‚Ŋッド */
public __construct(
    Iterator $iterator,
    string $pattern,
    int $mode = RegexIterator::MATCH,
    int $flags = 0,
    int $pregFlags = 0
)
public accept(): bool
public getFlags(): int
public getMode(): int
public getPregFlags(): int
public getRegex(): string
public setFlags(int $flags): void
public setMode(int $mode): void
public setPregFlags(int $pregFlags): void
/* į‰ŋã—ãŸãƒĄã‚Ŋッド */
}

åŽšįžŠæ¸ˆãŋ厚数

RegexIterator ぎ操äŊœãƒĸãƒŧド

RegexIterator::ALL_MATCHES

įžåœ¨ãŽã‚¨ãƒŗãƒˆãƒĒãĢマッチするもぎをすずãĻčŋ”しぞす (preg_match_all() ã‚’å‚į…§ãã ã•ã„)。

RegexIterator::GET_MATCH

įžåœ¨ãŽã‚¨ãƒŗãƒˆãƒĒãĢ最初ãĢマッチしたもぎをčŋ”しぞす (preg_match() ã‚’å‚į…§ãã ã•ã„)。

RegexIterator::MATCH

įžåœ¨ãŽã‚¨ãƒŗãƒˆãƒĒãĢ寞するマッチ (ãƒ•ã‚ŖãƒĢã‚ŋ) ぎãŋã‚’čĄŒã„ãžã™ (preg_match() ã‚’å‚į…§ãã ã•ã„)。

RegexIterator::REPLACE

įžåœ¨ãŽã‚¨ãƒŗãƒˆãƒĒをįŊŽæ›ã—ぞす (preg_replace() ã‚’å‚į…§ãã ã•ã„ã€‚ãžã åŽŒå…¨ãĢã¯åŽŸčŖ…ã•ã‚ŒãĻいぞせん)。

RegexIterator::SPLIT

įžåœ¨ãŽã‚¨ãƒŗãƒˆãƒĒã§åˆ†å‰˛ã—ãŸå€¤ã‚’čŋ”しぞす (preg_split() ã‚’å‚į…§ãã ã•ã„)。

RegexIterator ぎフナグ

RegexIterator::USE_KEY

į‰šåˆĨãĒフナグ: ã‚¨ãƒŗãƒˆãƒĒぎ値ではãĒく、キãƒŧãĢマッチさせぞす。

RegexIterator::INVERT_MATCH

RegexIterator::accept() ぎæˆģり値を反čģĸさせぞす。

ãƒ—ãƒ­ãƒ‘ãƒ†ã‚Ŗ

replacement

į›ŽæŦĄ

īŧ‹add a note

User Contributed Notes 2 notes

up
33
jinmoku at hotmail dot com Âļ
14 years ago
An exemple :

<?php
$a
= new ArrayIterator(array('test1', 'test2', 'test3'));
$i = new RegexIterator($a, '/^(test)(\d+)/', RegexIterator::REPLACE);
$i->replacement = '$2:$1';

print_r(iterator_to_array($i));
/*
Array
(
[0] => 1:test
[1] => 2:test
[2] => 3:test
)
*/
?>
up
4
chris dot snyder at totara dot com Âļ
2 years ago
In case the difference between modes RegexIterator::MATCH and RegexIterator::GET_MATCH is not immediately clear:

MATCH will only return one value per matched element, as a string.

GET_MATCH will return as many values, per matched element, as there are sub-patterns. If there are sub-patterns, each iteration returns an indexed array with the full pattern match at 0 and each of the sub-pattern matches as another element.

If there are no sub-patterns, the behaviour of GET_MATCH is the same as MATCH.
To Top