php - 从 preg_match_all() 获取行号

标签 php regex

我正在使用 PHP 的 preg_match_all() 搜索使用 file_get_contents() 导入的字符串。正则表达式返回匹配项,但我想知道在哪个行号找到了这些匹配项。实现这一目标的最佳技术是什么?

我可以将文件作为数组读取并为每一行执行正则表达式,但问题是我的正则表达式匹配回车符(新行)的结果。

最佳答案

好吧,有点晚了,也许你已经解决了这个问题,但我不得不这样做,而且相当简单。 在 preg_match 中使用 PREG_OFFSET_CAPTURE 标志将返回匹配的字符位置。 让我们假设$charpos,所以

list($before) = str_split($content, $charpos); // fetches all the text before the match

$line_number = strlen($before) - strlen(str_replace("\n", "", $before)) + 1;

瞧!

关于php - 从 preg_match_all() 获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4730867/

相关文章:

regex - 使用 MATLAB 正则表达式匹配重叠模式与捕获

php - MySQL 用户使用现有数据更新行

php - 如果用户的积分超过 10,000,他们会获得 5 级,但他们会获得 1 级? mysql逻辑错误?

php - 什么是 ? : in PHP 5. 3?

Python Regex - 在日期之前或之后高效

javascript - 嵌套值的正则表达式

python - 通过正则表达式使用替代方法连接术语

PHP 正则表达式获取 BBCode 标签之间的文本

php - 如何使用 codeigniter 使用多个或单个 id 在单个查询中更新多行或单行?

php - 如何在 Laravel php 中保持图像和水印的纵横比