函数:RegexIterator::setMode()
适用版本:PHP 5 >= 5.2.0, PHP 7
用法:RegexIterator::setMode(int $mode) : void
说明:该方法用于设置正则表达式迭代器的搜索模式。
参数:
- $mode:整数类型,表示搜索模式。可选值有以下几种:
- RegexIterator::MATCH:表示只返回匹配正则表达式的元素(默认值)。
- RegexIterator::GET_MATCH:返回完整的匹配数组(包含所有分组)。
- RegexIterator::ALL_MATCHES:返回所有匹配的数组(每个匹配对应一个数组)。
- RegexIterator::SPLIT:根据正则表达式将每个元素拆分为一个数组。
示例:
$fruits = array("apple", "banana", "cherry", "date", "elderberry");
// 创建一个正则表达式迭代器,只返回以字母"c"开头的水果
$iterator = new RegexIterator(new ArrayIterator($fruits), '/^c/i');
// 设置搜索模式为RegexIterator::MATCH
$iterator->setMode(RegexIterator::MATCH);
// 遍历迭代器并输出匹配的水果
foreach ($iterator as $fruit) {
echo $fruit . "\n";
}
// 输出:cherry
// 设置搜索模式为RegexIterator::GET_MATCH
$iterator->setMode(RegexIterator::GET_MATCH);
// 遍历迭代器并输出完整的匹配数组
foreach ($iterator as $fruit) {
echo implode(", ", $fruit) . "\n";
}
// 输出:cherry
// 设置搜索模式为RegexIterator::ALL_MATCHES
$iterator->setMode(RegexIterator::ALL_MATCHES);
// 遍历迭代器并输出所有匹配的数组
foreach ($iterator as $fruit) {
foreach ($fruit as $match) {
echo implode(", ", $match) . "\n";
}
}
// 输出:ch, c
注意:以上示例中,正则表达式迭代器被创建并应用于一个包含水果的数组。通过设置不同的搜索模式,我们可以控制迭代器的行为,返回不同类型的结果。