簡體   English   中英

使用php從文本文件中過濾數據

[英]Filter data out from text file using php

這是我基本上有:

$data = file('../articles.txt');

$data=str_replace(array('<', '>', '\\', '/', '='), "", $data);

foreach($data as $element) 

{
$element = trim($element);
$pieces = explode("|", $element);

echo "

<div class=article-box>

<div class=article-image>
<a href=" . $pieces[4] . "/" . $pieces[2] . "/ ><img src=" . $pieces[4] . "/" . $pieces[2] . "/" . $pieces[2] . "-img.png width=250px></a>  
</div>

代碼並沒有在這里結束,但是我希望到目前為止是有意義的。

我需要的是僅回顯那些具有某些$pieces[4]值的行。 假設-僅回顯文本文件中具有$pieces[4]值“ food”的行。

有可能嗎? 我嘗試了數組搜索,數組鍵,過濾后的數組等……但我從來沒有做對。

更新:佩德羅的答案(半途而廢):

{
$element = trim($element);
if (strpos($element,'food') !== false) {
$pieces = explode("|", $element);    
}

一種工作-它可以完成工作,但是將我要隱藏的那些輸出替換為那些被過濾掉的輸出。

我想要的是跳過不包含給定值的輸出。 目前,它會跳過不需要的輸出,但將其替換為空白值或僅將過濾后的輸出相乘。 以下是有關回聲需要哪些行以及跳過哪些行的說明。

2015-10-05|21:31|name1|name2|food|comment|extra - needs to trigger echo
2015-10-05|21:31|name1|name2|health|comment|extra - needs to skip
2015-10-05|21:31|name1|name2|food|comment|extra - needs to trigger echo
2015-10-05|21:31|name1|name2|finance|comment|extra - needs to skip
2015-10-05|21:31|name1|name2|finance|comment|extra - needs to skip
2015-10-05|21:31|name1|name2|health|comment|extra - needs to skip
2015-10-05|21:31|name1|name2|food|comment|extra - needs to trigger echo

上面的代碼現在做的是:

  1. 正確的輸出

  2. 替換輸出(與輸出1相同)-需要跳過

  3. 正確的輸出

  4. 替換輸出(與輸出3相同)-需要跳過

  5. 替換輸出(與輸出3相同)-需要跳過

  6. 替換輸出(與輸出3相同)-需要跳過

  7. 正確的輸出

因此,它設法過濾掉我需要的內容,但不符合條件的內容將被最后匹配的行替換。 但是我需要跳過這些。

唯一缺少的是對上述Pedro的回答進行補充,以便跳過,忽略,根本不回顯(不符合條件$pieces[4] =“ food”的條件)的行2,4,5,6。

您可以使用strpos來檢查該行是否包含food一詞。

$element = trim($element);
if (strpos($element,'food') !== false) {
    $pieces = explode("|", $element);
    //the rest of the code
}

我對Pedro的回答做了一些調整,我想我得到了所需的結果。 代碼是這樣的:

<?php
$data = file('../articles.txt');

$data=str_replace(array('<', '>', '\\', '/', '='), "", $data);
foreach($data as $element) 
{
$element = trim($element);
if (strpos($element,'food') !== false) {
$pieces = explode("|", $element);
echo "

這里的一些HTML和PHP不需要任何調整。

";    
}
else {
echo "";
}
}
?>

首先,我添加了echo“ error”; 到其他部分,但這只是為了測試。 通過刪除它,我得到了令人煩惱的錯誤消息。 目前看來,它正以這種方式工作。

如果我不添加else部分,那么我又回到了問題所在,它會過濾掉其中包含“食物”值的行,但這次只用零值回顯其他所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM