php - 如何使用 preg_match() 和 Yield(PHP 5.5 生成器语法)迭代正则表达式匹配?

标签 php regex foreach iterator

我想迭代正则表达式模式的匹配。

我不想使用 preg_match_all() 因为它会生成一个包含我不需要的所有匹配项的临时数组。我也不喜欢通过构建完整的迭代器类来使事情变得臃肿。

幸运的是 PHP 5.5 带来了很好的 yield语法,我认为与 preg_match() 结合应该可以解决这个问题?

最佳答案

循环遍历字符串中所有单词的简单示例迭代器:

function wordIterator($str)
{
    $offset = 0;
    while ( preg_match('/\w+/', $str, $m, PREG_OFFSET_CAPTURE, $offset)) {
        $offset = $m[0][1] + strlen($m[0][0]);
        yield $m[0][0];
    }
}

foreach( wordIterator('Lorem ipsum dolor.') as $word) {
    echo $word.'<br>';
}

关于php - 如何使用 preg_match() 和 Yield(PHP 5.5 生成器语法)迭代正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021715/

相关文章:

javascript - 使用 ng-click 获取示波器数据

javascript - 使用javascript后提交按钮帖子未发送

regex - 正则表达式负向前瞻

regex - 在 Symfony2 正则表达式验证器中使用引号字符

c# - 允许以逗号分隔的数字列表的正则表达式模式是什么?

php - 为什么这个 jQuery Replace() 不能在 <a 标签中工作,尽管我让它在 <p 标签中工作?

php - CMYK/RGB 色彩空间在 pdf 和图像中如何工作,以及它如何影响它们的相互转换?

javascript - 将 forEach() 方法更改为 For 循环以与 IntersectionObserver 一起使用 - Javascript

ios - 遍历两个自定义数组并在变量相等时设置值 Swift

javascript - 未捕获的 TypeError : json. forEach 不是函数