【问题标题】:find character in string from csv file using php?使用php从csv文件中查找字符串中的字符?
【发布时间】:2015-08-26 15:32:42
【问题描述】:

我真的是 php 的新手。我这样做有问题..

我的 sample.csv 文件包含 3 行:入站(第一行)、出站(第二行)和日期(第三行)。

样本.csv

      **inbound**                   **outbound**            **date**       
  IN/15@001234                  OUT/000000163-000000as     1/12/2014
  IN/15@004323                  NOT/000000141-00000043     1/14/2014
  IN/15@005555                  OUT/000000164-000000jk     1/15/2014

是否可以显示第 2 行以“NOT”开头且字符“-”之前的数字为 141 的所有列???

输出:

IN/15@004323                NOT/000000141-00000043     1/14/2014

我不知道这是否可能...请帮助我.. 我在下面有一个代码。但它只打开 csv 文件...

$file  = fopen('Master.csv', 'r');

echo "<table style='border: 2px solid black; text-align:left'>";
while (($line = fgetcsv($file)) !== FALSE) {  
    list($inbound, $outbound, $date) = $line;          

        echo "<tr>";
        echo "<td>$inbound</td>"; 
        echo"<td>$outbound</td>"; 
        echo "<td>$date</td>";
        echo "</tr>"; 

}
echo "</table>";

是否可以显示第 2 行以“NOT”开头且字符“-”之前的数字为 141 的所有列?

【问题讨论】:

标签: php csv


【解决方案1】:

插入

if (preg_match('/^NOT/', $outbound)) continue;

list()... 语句之后应该就足够了。

但您的数据看起来不像是逗号分隔的,而是制表符分隔的。也许您在开始谈论行时是指列?

【讨论】:

  • in NOT/000000141-00000043 .. 如何获取“-”连字符之前的字符?即 141
  • preg_match('/\\d*-/', $outbound, $matches) 将为您提供$matches[0] 中连字符前的所有数字。
  • 我可以告诉你它是如何工作的。您必须自己编写代码。
【解决方案2】:

您可以使用strpos()

if ( strpos($outbound, 'NOT') !== false ) {
// "NOT" WORD FOUND IN STRING
}

【讨论】:

  • 这将产生0,这将被视为假。
  • in NOT/000000141-00000043 ..如何获取“-”连字符之前的字符?即 141
  • @Bee 你是什么意思?
  • 我想显示哪个以 NOT 开头,hypen(-) 之前的 3 个字符是 141...... 然后它显示 NOT/000000141-00000043
【解决方案3】:

试试这个。这将适用于逗号分隔的 csv 文件。

echo "<table border = 1><tr><td>first</td><td>second</td><td>third</td></tr>"; //creating table
$handle = fopen('fe.csv', "r");     //open csv file 

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)   //read csv file row by row
{
    //check both NOT and 141- in the string
    if ( (strpos($data[1], 'NOT') !== false ) && (strpos($data[1], '141-') !== false )) {
        //add required field data to table
        echo "<tr>";
        echo "<td>".$data[0]."</td>"; 
        echo"<td>".$data[1]."</td>"; 
        echo "<td>".$data[2]."</td>";
        echo "</tr>"; 
    }
}
echo "</table>"; //close table
?>

【讨论】:

  • @Bee :我想我正在使用您需要的正确字符串比较。如有其他情况请更新。
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
相关资源
最近更新 更多