删除每行的最后一个字符

Remove last character on each line

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

我收到带有 tables 的电子邮件,这些电子邮件旨在将其放入 CSV 文件中,我正在尝试创建一个脚本来读取我的邮件,只显示带有 tables 的电子邮件和将文本转换为 CSV 文件,将文件移动到我的文件夹,读取并传输数据。最大的部分已经完成了,但我正在为这一点而苦苦挣扎。

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

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

我尝试了一些 rtrims 和 substr,但我无法对每一行都这样做。

echo substr($key, 0, -1); 只去掉最后一行的制表符,它是 1 个完整的字符串,所以我不确定是否可行。

如果需要更多代码,我想听听。 抱歉,问题很长,如有任何帮助,我们将不胜感激!

谢谢=)

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

str_replace("\t\n","\n", $string);

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

这应该从字符串的每一行($subject 下方)中删除尾随 space。如果您不使用 m 修饰符,它只会删除字符串末尾的尾随 space。

<?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'

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

我已经解决了我自己的问题。 我将所有 <td> 替换为制表符,每第 8 个制表符被替换为空,所以我将其删除。

这是我用过的代码:

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

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