我正在尝试制作一个小的php脚本来自动化一些工作流程.
脚本要做的就是读取一个文件(每个文件大约10-20kb).
然后,我需要在文件中搜索一些特定的短语,然后输出-如果出现短语,则显示行号和短语.
例如,我有一个正在阅读和搜索的文本文件.我搜索短语“花是黄色”,“马是白色”和“混合”;
然后我的输出是:
第4行:“马是白色的”
第19行:“混合;”
第22行:“混合;”
第99行:“花是黄色的”
… 等等.
我正在使用此代码,该代码可以正确输出每行和行号,但是我无法创建仅输出搜索到的短语的搜索例程:
<?php
$lines = file('my-text-file.txt');
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
我的方法是使用strpos,然后每次出现该短语时,它都会将其放入一个数组(或字典)中,其中行号为键,而该短语为值,但无法使其起作用,我认为可能会有更好,更有效的方法.
我们非常乐意向您提供任何帮助或建议.
谢谢
-梅斯蒂卡
解决方法:
function search ( $what = array (), $filePath ) {
$lines = file ( $filePath );
foreach ( $lines as $num => $line ) {
foreach ( $what as $needle ) {
$pos = strripos ( $line, $needle );
if ( $pos !== false ) {
echo "Line #<b>{$num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
}
}
}
# Usage:
$what = array ( 'The horse is white', 'The flower is yellow', 'mixed' );
search ( $what );