的位置的整行
我想在一个大列表文件中查找一个单词。
然后,如果并且当找到该单词时,取找到该单词的列表文件的整行?
到目前为止,我还没有看到任何PHP字符串函数来做这个
使用一个行分隔的正则表达式来查找单词,那么您的匹配将包含整行。
类似:
preg_match('^.*WORD.*$, $filecontents, $matches);
那么$matches
将有它找到WORD
您可以使用preg_match:
$arr = array();
preg_match("/^.*yourSearch.*$/", $fileContents, $arr);
$arr
将包含匹配项。
$path = "/path/to/wordlist.txt";
$word = "Word";
$handle = fopen($path,'r');
$currentline = 1; //in case you want to know which line you got it from
while(!feof($handle))
{
$line = fgets($handle);
if(strpos($line,$word))
{
$lines[$currentline] = $line;
}
$currentline++;
}
fclose($handle);
如果您只想在单词出现的地方找到一行,那么不要将其保存到数组中,而是将其保存在某个地方,并且在匹配完成后仅保存break
。
这应该可以在任何大小的文件上快速工作(在大文件上使用file()可能不太好)
试试这个:
$searhString = "search";
$result = preg_grep("/^.*{$searhString}.*$/", file('/path/to/your/file.txt'));
print_r($result);
解释:
- file()将读取你的文件并生成行数组
- preg_grep()将返回找到匹配模式的数组元素
-
$result
是结果数组。