Php 删除每行的最后一个字符

Php 删除每行的最后一个字符,php,replace,substr,Php,Replace,Substr,我制作了一个脚本,从一个文件夹中读取所有CSV文件,将数据放入我的数据库,然后将所有CSV文件移动到另一个文件夹 我收到带有表格的电子邮件,这些表格是为了将其放入CSV文件中,我正在尝试创建一个脚本来读取我的邮件,只显示带有表格的电子邮件,并将文本转换为CSV文件,将文件移动到我的文件夹中,读取并传输数据。最重要的部分已经完成了,但我正在努力解决这一点 在过滤邮件并获得表格后,我去掉了HTML标记(,等)我将替换为选项卡,因为它必须分隔行,但是在最后一个上,它还添加了一个选项卡,这使得我的脚本无

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

我收到带有表格的电子邮件,这些表格是为了将其放入CSV文件中,我正在尝试创建一个脚本来读取我的邮件,只显示带有表格的电子邮件,并将文本转换为CSV文件,将文件移动到我的文件夹中,读取并传输数据。最重要的部分已经完成了,但我正在努力解决这一点

在过滤邮件并获得表格后,我去掉了HTML标记
(,等)
我将
替换为选项卡,因为它必须分隔行,但是在最后一个
上,它还添加了一个选项卡,这使得我的脚本无法读取CSV文件,因为分隔符是选项卡,而在最后一个选项卡上没有给定值

这是我的HTML表,在删除了所有带有string和preg replace的标记之后,正如您所看到的,它的末尾有一个选项卡(很抱歉隐藏了一些文本)

我已经尝试了一些RTRIM和substr,但我没有能够为每一行都这样做

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

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

谢谢=)

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

str_replace("\t\n","\n", $string);
您可以在正则表达式中尝试使用m(PCRE_多行)修饰符

这将从字符串的每一行(低于$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;

在你的主题上尝试一下,因为这里的输出很难阅读。

我已经解决了我自己的问题。 我将所有的
替换为选项卡,并且每第八个选项卡都将被替换为零,因此我将删除它

这是我使用的代码:

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

事实上,我很高兴,我花了很长时间来分析无法读取CSV文件的问题,然后进行修复。

请不要使用代码或消息的屏幕截图,而是始终使用编辑器的相应命令将源代码放到帖子中。谢谢啊好的,对不起,我试着让我的问题尽可能简短,粘贴代码会让我的问题看起来更大。我只是注意到我可以尝试用一个标签替换所有问题,但每8个我可以将其替换为零,所以第8个将是“第16个将是”等等。循环每一行并应用
trim
你能用逗号代替制表符吗?嘿,谢谢你的回答,但我不知道这会有什么帮助。我想我知道你的意思,当有一个制表符和一个新行时,它会“删除”制表符,这主意不错,但不起作用,您必须对此使用双引号,而不是单引号\t表示制表符,\n表示新行。因此,当您将字符串传递给“str_replace”函数时,它将查找每行中的最后一个制表符,并将其替换为新行字符。因此,行尾的新选项卡将自动删除。是的,我已经评论过了,这是一个原创的想法,非常感谢,但它不适用于x(它不适用于双引号;(echo str_替换(“\t\n”,“\n”,$outputstr);我不想让你感觉不好,但我真的不知道它是如何工作的,我试图从php中获得更多的知识。net@ShockingShell,我添加了一个小的解释,它只是一个多查找和替换,应该会从每行末尾删除包括制表符在内的尾随空间。很高兴你找到了解决方案,你尝试了我的建议吗?我已经尝试了d但是没用,我真的很感谢你的努力!
$res_str = array_chunk(explode("\t",$outputstr),8);
foreach( $res_str as &$val){
   $val  = implode("\t",$val);
}
echo implode("",$res_str);