使用关键字在PHP中过滤数组?
我可以在下面的代码中添加什么来使用数组中的关键字过滤返回的结果 发送关键字并进行函数调用的代码在Javasript中 下面的代码打开一个文件,使用请求获取一个指针,打开该文件并找到该指针,然后检索从指针到文件末尾的所有日志行。然后将其格式化为JSON对象并发送回JavaScript使用关键字在PHP中过滤数组?,php,javascript,arrays,filter,Php,Javascript,Arrays,Filter,我可以在下面的代码中添加什么来使用数组中的关键字过滤返回的结果 发送关键字并进行函数调用的代码在Javasript中 下面的代码打开一个文件,使用请求获取一个指针,打开该文件并找到该指针,然后检索从指针到文件末尾的所有日志行。然后将其格式化为JSON对象并发送回JavaScript function tail(){ $keywords = json_decode($_REQUEST['keywords']); $file = "/path/to/the/log.log";
function tail(){
$keywords = json_decode($_REQUEST['keywords']);
$file = "/path/to/the/log.log";
$handle = fopen($file, "r");
clearstatcache();
if ($_REQUEST['pointer'] == '') {
fseek($handle, -1024, SEEK_END);
} else {
fseek($handle, $_REQUEST['pointer']);
}
while ($buffer = fgets($handle)) {
$log .= $buffer . "<br />\n";
}
$output = array("pointer" => ftell($handle), "log" => $log);
fclose($handle);
echo json_encode($output);
}
函数尾部(){
$keywords=json_解码($_请求['keywords']);
$file=“/path/to/the/log.log”;
$handle=fopen($file,“r”);
clearstatcache();
如果($_请求['pointer']=''){
fseek($handle,-1024,SEEK\u END);
}否则{
fseek($handle,$_请求['pointer']);
}
而($buffer=fgets($handle)){
$log.=$buffer.“
\n”;
}
$output=array(“指针”=>ftell($handle),“日志”=>$log);
fclose($handle);
echo json_编码($output);
}
请告诉我如何使用关键字数组中的关键字筛选检索到的数据 将您的读取循环更改为:
while ($buffer = fgets($handle)) {
foreach ($keywords as $kw) { // Loop keywords
if (strpos($buffer, $kw) !== FALSE) { // Search for this keyword
// If we get here, we found a keyword
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
foreach($keywords作为$kw){//循环关键字
如果(strpos($buffer,$kw)!==FALSE){//搜索此关键字
//如果我们到了这里,我们找到了一个关键字
$log.=$buffer.“
\n”;
打破
}
}
}
如果要以不区分大小写的方式进行匹配,可以使用
stripos()
。将读取循环更改为:
while ($buffer = fgets($handle)) {
foreach ($keywords as $kw) { // Loop keywords
if (strpos($buffer, $kw) !== FALSE) { // Search for this keyword
// If we get here, we found a keyword
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
foreach($keywords作为$kw){//循环关键字
如果(strpos($buffer,$kw)!==FALSE){//搜索此关键字
//如果我们到了这里,我们找到了一个关键字
$log.=$buffer.“
\n”;
打破
}
}
}
如果要以不区分大小写的方式进行匹配,可以使用
stripos()
。可以在每个空格上拆分行,并根据提供的关键字检查每个单词:
while ($buffer = fgets($handle)) {
$words = explode(' ', $buffer);
foreach ($words as $word) {
if (in_array($word, $keywords)) {
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
$words=爆炸(“”,$buffer);
foreach($words作为$word){
if(在数组中($word,$keywords)){
$log.=$buffer.“
\n”;
打破
}
}
}
或者对照读取行检查每个关键字:
while ($buffer = fgets($handle)) {
foreach ($keywords as $keyword) {
if (strstr($buffer, $keyword)) {
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
foreach($keywords作为$keyword){
if(strstr($buffer,$keyword)){
$log.=$buffer.“
\n”;
打破
}
}
}
您可以在每个空格上拆分行,并根据提供的关键字检查每个单词:
while ($buffer = fgets($handle)) {
$words = explode(' ', $buffer);
foreach ($words as $word) {
if (in_array($word, $keywords)) {
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
$words=爆炸(“”,$buffer);
foreach($words作为$word){
if(在数组中($word,$keywords)){
$log.=$buffer.“
\n”;
打破
}
}
}
或者对照读取行检查每个关键字:
while ($buffer = fgets($handle)) {
foreach ($keywords as $keyword) {
if (strstr($buffer, $keyword)) {
$log .= $buffer . "<br />\n";
break;
}
}
}
while($buffer=fgets($handle)){
foreach($keywords作为$keyword){
if(strstr($buffer,$keyword)){
$log.=$buffer.“
\n”;
打破
}
}
}
您所说的“按关键字过滤”是什么意思?您想查看日志行中是否包含某个单词?是的。。。如果收到的行包含任何关键字,则我希望保留该行,并放弃不包含任何关键字的任何其他行。您所说的“按关键字筛选”是什么意思?您想查看日志行中是否包含某个单词?是的。。。如果收到的行包含任何关键字,那么我希望保留该行,并放弃不包含任何关键字的任何其他行。