我正在尝试在PHP文件中搜索字符串,当找到该字符串时,我想返回字符串所在的整个LINE。这是我的示例代码。我想我将不得不使用爆炸,但无法解决这个问题。
$searchterm = $_GET['q'];
$homepage = file_get_contents('forms.php');
if(strpos($homepage, "$searchterm") !== false)
{
echo "FOUND";
//OUTPUT THE LINE
}else{
echo "NOTFOUND";
}
答案 0 :(得分:11)
使用file
函数将整个文件作为行数读取。
function getLineWithString($fileName, $str) {
$lines = file($fileName);
foreach ($lines as $lineNumber => $line) {
if (strpos($line, $str) !== false) {
return $line;
}
}
return -1;
}
答案 1 :(得分:1)
如果使用file
而不是file_get_contents
,则可以逐行遍历数组,搜索文本,然后返回该数组的元素。
PHP file文档
答案 2 :(得分:1)
您希望使用fgets函数拉出单个行,然后搜索
<?PHP
$searchterm = $_GET['q'];
$file_pointer = fopen('forms.php');
while ( ($homepage = fgets($file_pointer)) !== false)
{
if(strpos($homepage, $searchterm) !== false)
{
echo "FOUND";
//OUTPUT THE LINE
}else{
echo "NOTFOUND";
}
}
fclose($file_pointer)
答案 3 :(得分:1)
您可以使用fgets()
功能获取行号。
类似的东西:
$handle = fopen("forms.php", "r");
$found = false;
if ($handle)
{
$linecount = 0;
while (($buffer = fgets($handle, 4096)) !== false)
{
if (strpos($buffer, "$searchterm") !== false)
{
echo "Found on line " . $countline + 1 . "\n";
$found = true;
}
$countline++;
}
if (!$found)
echo "$searchterm not found\n";
fclose($handle);
}
如果您仍想使用file_get_contents()
,请执行以下操作:
$homepage = file_get_contents("forms.php");
$exploded_page = explode("\n", $homepage);
$found = false;
for ($i = 0; $i < sizeof($exploded_page); ++$i)
{
if (strpos($buffer, "$searchterm") !== false)
{
echo "Found on line " . $countline + 1 . "\n";
$found = true;
}
}
if (!$found)
echo "$searchterm not found\n";
答案 4 :(得分:1)