如何在PHP中操作文本文件

时间:2016-03-29 02:21:43

标签: php text

我有一个如下所示的文本文件:

enter image description here

有没有办法只在每行回应特定字符?

  • 以" 9954"开头的29个字符值
  • 该行的最后13个字符

我的代码显示文本文件:

<?php
header('Content-Type: text/html; charset=UTF-8');
echo "<pre>".file_get_contents("MAGFLE_Greenbnk_Caraga.txt")."</pre>";
?>

非常感谢您的帮助 谢谢

2 个答案:

答案 0 :(得分:0)

使用多行正则表达式并遍历所有匹配项:

$source = file_get_contents("MAGFLE_Greenbnk_Caraga.txt");
$matches = [];

preg_match_all("/(9954[0-9]{25}).*(.{13}$)/um", $source, $matches);

for($i = 0; $i < count($matches[1]); ++$i) {
    echo "Line {$i} -- ";
    echo "chars that start with '9954': {$matches[1][$i]} --- ";
    echo "last 13 chars: {$matches[2][$i]} <br>";
}

正则表达式包含两个捕获组。第一组匹配以'6654'开头的29个字符。第二个匹配最后13个字符。

matches数组包含3个数组:

  • 第一个数组包含所有匹配的行
  • 第二个数组包含第一个捕获组的所有匹配项
  • 第三个数组包含第二个捕获组的所有匹配项

应用数据时我得到以下输出:

result

根据您的数据,这不适用于所有情况。也许你必须用更多的规则来增强正则表达式。

答案 1 :(得分:-2)

您可以将.txt数据存储在数组中,然后根据需要进行排序。 explode()函数应该有所帮助。下面给出的链接 -

Reading text after a certain character in php