Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在固定宽度的文本文件中搜索_Php_File_Search_Text - Fatal编程技术网

Php 在固定宽度的文本文件中搜索

Php 在固定宽度的文本文件中搜索,php,file,search,text,Php,File,Search,Text,考虑一个带有 ID TYPE YEAR 1 Book 2000 2 Car 2007 3 Home 2005 有没有办法在列中搜索?事实上,我们需要跳过其他行,在每行的x到y字符范围内进行搜索。例如,5-15用于搜索类型。我更喜欢用php找到解决方案,但如果只可能用指定的语言,那就可以了。依次阅读每一行,并通过传入$offset参数在其中搜索,从您的列开始搜索。然后检查返回值,如果在另一列中实际找到结果,则忽略“成功”搜索(知道目

考虑一个带有

ID   TYPE      YEAR
1    Book      2000
2    Car       2007
3    Home      2005

有没有办法在列中搜索?事实上,我们需要跳过其他行,在每行的x到y字符范围内进行搜索。例如,5-15用于搜索类型。我更喜欢用php找到解决方案,但如果只可能用指定的语言,那就可以了。

依次阅读每一行,并通过传入
$offset
参数在其中搜索,从您的列开始搜索。然后检查返回值,如果在另一列中实际找到结果,则忽略“成功”搜索(知道目标列的宽度会将其减少为整数比较)

或者,您可以从每一行搜索目标列,并仅在其中搜索,在这种情况下,您确实执行了可能不必要的字符串操作,但另一方面,您减少了要搜索的字符串的长度(并且无需检查是否在另一列中找到了结果)


在您看来,在决定采用哪种方法之前,我会先对其进行一点基准测试。

您是说不将其转换为另一种数据结构(如数组)?或者加载到数组中然后搜索是否有效?对我来说,它看起来像是一个以空格分隔的CSV,所以你应该能够加载它并使用子字符串逐行执行..将其转换为数组将消耗大量内存;这取决于你想做什么。如果您确实不关心没有匹配项的任何行(过滤),只需使用一行接一行,并在
strpos()
上捕获数据即可。如果你正在排序(听起来不像),那么你可能仍然会一行一行地排序。我在出门的时候写了这篇评论,所以这只是我想到的第一件事。