使用php从文本文件中过滤数据
这就是我的基本情况:使用php从文本文件中过滤数据,php,text-files,Php,Text Files,这就是我的基本情况: $data = file('../articles.txt'); $data=str_replace(array('<', '>', '\\', '/', '='), "", $data); foreach($data as $element) { $element = trim($element); $pieces = explode("|", $element); echo " <div class=article-box> <
$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>
{
$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
上面的代码现在所做的是:
$pieces[4]
=“food”)2,4,5,6。您可以使用该行检查是否包含单词food
$element = trim($element);
if (strpos($element,'food') !== false) {
$pieces = explode("|", $element);
//the rest of the code
}
您可以使用检查该行是否包含单词food
$element = trim($element);
if (strpos($element,'food') !== false) {
$pieces = explode("|", $element);
//the rest of the code
}
我对佩德罗的回答做了一些调整,我想我得到了我需要的结果。代码是这样的:
<?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 "
首先我添加了echo“error”;但这只是为了测试。通过删除,我得到了令人不安的错误消息。目前,它似乎就是这样工作的
如果我不添加else部分,那么我又回到了问题所在,它过滤掉了其中包含有“食物”价值的行,但也只在这一次以零值重复其他所有内容 我对佩德罗的答案做了一些调整,我想我得到了我需要的结果。代码是这样的:
<?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 "
首先我添加了echo“error”;但这只是为了测试。通过删除,我得到了令人不安的错误消息。目前,它似乎就是这样工作的
如果我不添加else部分,那么我又回到了问题所在,它过滤掉了其中包含有“食物”价值的行,但也只在这一次以零值重复其他所有内容 使用
$data=str\u替换(数组(“,”,“/”,“=”),“,$data)
内部foreach
(将$data
更改为$element
),这样您就可以过滤掉VAL。此外,如果您发布一些文本文件内容,这将是一件好事。Spedro的答案是有效的,但它会将结果与文档中的总行数相乘。现在我只需要弄清楚如何停止它内部foreach
(将$data
更改为$element
),这样您就可以过滤掉VAL。此外,如果您发布一些文本文件内容,这将是一件好事。Spedro的答案是有效的,但它会将结果与文档中的总行数相乘。现在我只需要想办法阻止它。非常感谢!它是有效的,但是。。。它过滤所需的行,然后将其与总行数相乘。假设我有两行代码,其中包含名为“food”的片段。首先,它会重复这两行,然后重复最后一行,就像文档中的行总数一样。佩德罗,你能帮我解决乘法问题吗。我怎样才能将结果限制为只回显一次呢?您能否发布输入文件和所需输出的小样本?如果是,请更新你的问题。我更新了主要问题。谢谢你花时间。到目前为止,这帮了我很大的忙。我不确定我是否在跟踪你……我的答案上没有任何内容被替换,只是经过了过滤。你可能想发布一个真实的例子。非常感谢!它是有效的,但是。。。它过滤所需的行,然后将其与总行数相乘。假设我有两行代码,其中包含名为“food”的片段。首先,它会重复这两行,然后重复最后一行,就像文档中的行总数一样。佩德罗,你能帮我解决乘法问题吗。我怎样才能将结果限制为只回显一次呢?您能否发布输入文件和所需输出的小样本?如果是,请更新你的问题。我更新了主要问题。谢谢你花时间。到目前为止,这帮了我很大的忙。我不确定我是否在跟踪你……我的答案上没有任何内容被替换,只是经过了过滤。你可能想发布一个真实的例子。