gpt4 book ai didi

PHP - 获取正则表达式结果的行号

转载 作者:可可西里 更新时间:2023-11-01 00:07:04 24 4
gpt4 key购买 nike

我正在尝试编写一些 PHP 来读取 CSS 文件,查找所有出现的 @group 注释及其行号。这是我目前所拥有的,但它返回的是字符数而不是行号。

$file = 'master.css';
$string = file_get_contents($file);

$matches = array();
preg_match_all('/\/\* @group.*?\*\//m', $string, $matches, PREG_OFFSET_CAPTURE);
list($capture, $offset) = $matches[0];
$line_number = substr_count(substr($string, 0, $offset), "\n") + 1;

echo '<pre>';
print_r($matches[0]);
echo '</pre>';

最佳答案

尝试使用 file()而不是 file_get_contents() .不同之处在于 file() 将文件内容作为数组返回,每行一个元素,而不是像 file_get_contents 那样作为字符串返回。我应该注意到 file() 返回每行末尾的换行符作为数组元素的一部分。如果您不想这样做,请添加 FILE_IGNORE_NEW_LINES 标志作为第二个参数。

从那里,您可以使用 preg_grep()仅返回初始数组中的元素。如果您只想要行号,您可以阅读它们的索引以确定匹配的行:

一个例子:

我的文件.txt:

hello world
how are you
say hello back!

line_find.php:

$filename = "myfile.txt";
$fileContents = file($filename);

$pattern = "/hello/";
$linesFound = preg_grep($pattern, $fileContents);

echo "<pre>", print_r($linesFound, true), "</pre>";

结果:

Array
(
[0] => hello world

[2] => say hello back!
)

希望对您有所帮助。

关于PHP - 获取正则表达式结果的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com