我有一个从txt文件中读取的php脚本,并在允许用户输入要搜索的字符串后显示结果。
系统使用文件名和行号显示用户请求。 正如它在上传的图片中所示。
我需要的是让每列包含文件名,行将包含行号。
基于米尔扎答案的结果
最后的结果
截图
based on latest update of Mirza answer
سيلانالطاقةالحراريةمنالبيئةوإليها。 وعادةمايطلقهذاالاسمعلى ظاهرةارتفاعدرجاتحرارةالأرضعنمعدلهاالطبيعي。 وقدازدادالمعدل العالميلدرجةحرارةالهواءعندسطحالأرضب0.74±0.18°Cخلالالمائة 2005年عامالمنتهيةسنة “أغلبالزيادةالملحوظةفيمعدلدرجةالحرارةالعالميةمنذمنتصفالقرن العشرينتبدوبشكلكبيرنتيجةلزيادةغازاتالاحتباسالحراري(غازات البيتالزجاجي)التيتبعثهاالنشاطاتالتييقومبهاالبشر。
تخترقأغلبأشعةالشمسالغلافالجويلتصلإلىسطحالأرضوأغلبتلكالأشعة تقعفيالطولالموجيالمرئي(ضوءالشمسالذيتراهالعين)لذلكيحدثتسخين 更多信息,更多信息,更多信息 更多信息,更多信息 الحياةعليها。
تسخنالأرضلامتصاصحرارةالشمس,ثميعيدسطحالأرضإشعاعالطاقةالممتصة 更多信息来自الغلافالجوي حراري。 وفيهذهالحالةتكوندرجةحرارةسطحالأرضنحو - 2.3درجةمئوية, 发布消息来源:وهذا المثالمخالفللواقع)。
وفيالواقعتعقيدات,حيثيحتجزالغلافالجويجزءامنالأشعةتحت الحمراء;لوجودجزئياتثانيأكسيدالكربونوبخارالماءالتيتمتصالجزء 更多信息,更多信息更多信息 الغلافالجويإلىالفضاء,ويعملالجزءالممتصمنالأشعةتحتالحمراءفي الغلافالجويعلىرفعدرجةالحرارة。1
<?php
$result = [];
if(isset($_POST["search"]))
{
$search =$_POST['name'];
echo "the word $search exist: <br><br>";
foreach(glob($_SERVER['DOCUMENT_ROOT']."/readfiletest/*.txt") as $txts)
{
$line = 1;
$temp = [];
$myFileLink = fopen($txts, 'r');
while(!feof($myFileLink))
{
$myFileContents = fgets($myFileLink);
if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
{
$temp['filename'] = basename ($txts);
foreach($matches[1] as $match)
{
$temp['lines'][] = $line;
}
}
++$line;
}
fclose($myFileLink);
$result[] = $temp;
}
//display the table
echo '<table border=2>';
$filenameHtml = '<tr>';
$lineNumberHtml = '<tr>';
foreach ($result as $item){
$filename = isset($item['filename']) ? $item['filename'] : '';
$lines = isset($item['lines']) ? implode(',',$item['lines']) : '';
$filenameHtml .= "<th>$filename</th>";
$lineNumberHtml .= "<td>$lines</td>";
}
$filenameHtml .= '</tr>';
$lineNumberHtml .= '</tr>';
echo $filenameHtml.$lineNumberHtml;
echo '</table>';
}
?>
<html>
<head>
</head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
#form {
background: -webkit-linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
background: -moz-linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
background: linear-gradient(bottom, #CCCCCC, #EEEEEE 175px);
margin: auto;
width: 200px;
height: 200px;
position: absolute;
font-family: Tahoma, Geneva, sans-serif;
font-size: 14px;
font-style: italic;
line-height: 24px;
font-weight: bold;
color: #09C;
text-decoration: none;
border-radius: 10px;
padding: 10px;
border: 1px solid #999;
border: inset 1px solid #333;
-webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
}
</style
<body>
<div id = "form">
<form action="index.php" method="post">
<h1 align =center > Search Form </h1>
<p>enter your string <input type ="text" id = "idName" name="name" /></p>
<p align =center ><input type ="Submit" name ="search" value= "Search" /></p>
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
如果我理解正确,您希望看到如下所示的结果。
请替换如下的php代码。
<?php
$result = [];
if(isset($_POST["search"]))
{
$search =$_POST['name'];
echo "the word $search exist: <br><br>";
foreach(glob($_SERVER['DOCUMENT_ROOT']."/readfiletest/*.txt") as $txts)
{
$line = 1;
$temp = [];
$myFileLink = fopen($txts, 'r');
while(!feof($myFileLink))
{
$myFileContents = fgets($myFileLink);
if( preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches))
{
$temp['filename'] = basename ($txts);
foreach($matches[1] as $match)
{
$temp['lines'][] = $line;
}
}
++$line;
}
fclose($myFileLink);
if(!empty($temp)) {
$result[] = $temp;
}
}
//display the table
echo '<table border=2>';
$filenameHtml = '<tr>';
foreach ($result as $item) {
$filename = isset($item['filename']) ? $item['filename'] : '';
$filenameHtml .= "<th>$filename</th>";
//this line was not having the concatination
$lineNumberHtml .= '<td><table width="100%" border=2>';
foreach($item['lines'] as $line) {
$lineNumberHtml .= '<tr>';
$lineNumberHtml .= "<td>$line</td>";
$lineNumberHtml .= '</tr>';
}
$lineNumberHtml .= '</table></td>';
}
$filenameHtml .= '</tr>';
echo $filenameHtml.$lineNumberHtml;
echo '</table>';
}
?>
希望这有帮助!