删除每行的最后一个字符

时间:2018-10-26 08:40:42

标签: php replace substr

我制作了一个脚本,可以从一个文件夹中读取所有CSV文件,然后将数据放入我的数据库中,然后将所有csv文件移动到另一个文件夹中。

我收到带有要放入CSV文件的表格的电子邮件,我试图创建一个脚本来读取我的邮件,仅显示带有表格的电子邮件并将文本转换为CSV文件,然后将文件移至我的文件夹,读取它并传输数据。最大的部分已经完成,但是我为此感到吃力。

过滤邮件并获得表格后,我拿走了HTML标签(<table>, <p>, <tr> etc.),我将</td>替换为制表符,因为它必须分隔行,但在最后一个{{1} }它还添加了一个选项卡,这使我的脚本无法读取CSV文件,因为分隔符是选项卡,而在最后一个选项卡上没有给出值。

这是我的HTML表,它删除了所有带有字符串和preg替换的标签后,如您所见,它的末尾有一个制表符(抱歉隐藏一些文本)

HTML Table

我已经尝试了一些rtrims和substr,但是我无法针对每一行执行此操作。

</td>仅除去最后一行的制表符,它是1个完整的字符串,所以我不确定是否可以。

如果需要更多代码,那么我想听听。 很抱歉,这个问题很久,不胜感激!

谢谢=)

3 个答案:

答案 0 :(得分:1)

尝试使用\ t \ n个字符的str_replace函数:

  holder.mPublic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            holder.mPublic.setSelected(true);
            holder.mPrivate.setSelected(false);
            FirebaseDatabase.getInstance().getReference().child("Reviews").child(mId).child()

        }
    });
    holder.mPrivate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            holder.mPrivate.setSelected(true);
            holder.mPublic.setSelected(false);

        }
    });

答案 1 :(得分:0)

您可以在正则表达式中尝试使用m(PCRE_MULTILINE)修饰符。

这应该从字符串的每一行中删除尾随空格(在$ subject下面)。如果不使用m修饰符,则只会删除字符串末尾的尾部空格。

<?php

$pattern = "@\s$@m";
$subject = "'a'\t'b'\t'c'\t\n'd'\t'e'\t'f'\t\n";

$out     = preg_replace($pattern, '', $subject);
print $out;

输出:

'a' 'b' 'c'
'd' 'e' 'f'

请在您的主题上尝试一下,因为此处的输出很难阅读。

答案 2 :(得分:0)

我已经解决了自己的问题。 我将所有<td>都替换为标签,每个第8个标签都被替换为空,因此我将其删除。

这是我使用的代码:

$res_str = array_chunk(explode("\t",$outputstr),8);
foreach( $res_str as &$val){
   $val  = implode("\t",$val);
}
echo implode("",$res_str);

我真的很高兴,花了我这么长时间才开始分析甚至无法读取CSV文件然后修复它的问题。