Удалить последний символ в каждой строке - PullRequest
0 голосов
/ 26 октября 2018

Я создал скрипт, который считывает все файлы CSV из папки, помещает данные в мою базу данных и впоследствии перемещает все файлы CSV в другую папку.

Я получаю электронные письма с таблицами, которые предназначены для размещенияэто в файл CSV, я пытаюсь создать сценарий, который читает мою почту, показывает только электронные письма с таблицами и преобразует текст в файл CSV, перемещает файл в мою папку, читает его и передает данные.Большая часть уже сделана, но я борюсь с этим битом.

После фильтрации почты и создания таблицы я убрал теги HTML (<table>, <p>, <tr> etc.) Я заменяю </td> на вкладки, потому что этодолжен разделять строки, но на последнем </td> он также добавляет вкладку, и это делает мой сценарий неспособным читать файлы CSV, потому что разделитель является вкладками, а на последней вкладке значение не указано.

Это моя таблица HTML после удаления всех тегов со строкой и прег заменой, и, как вы видите, в конце есть вкладка (извините за скрытие некоторого текста)

HTML Table

Я пробовал некоторые rtrims и substr, но я не смог сделать это для каждой строки.

echo substr($key, 0, -1); Убирает только вкладку в последней строке, это 1 полная строка, поэтому я не уверен, возможно ли это.

Если понадобится еще какой-то код, я бынравится это слышать.Извините за длинный вопрос, любая помощь будет оценена!

Спасибо =)

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы можете попробовать модификатор 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'

Попробуйте его на предметепоскольку вывод здесь трудно прочитать.

0 голосов
/ 26 октября 2018

Я решил свой вопрос. Я заменяю все свои <td> вкладками, а каждая восьмая вкладка заменяется ничем, поэтому я удаляю ее.

Это код, который я использовал:

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

Я так счастлив на самом деле, что мне понадобилось так много времени, чтобы сначала даже проанализировать проблему из-за невозможности прочитать файл CSV, а затем исправить его.

0 голосов
/ 26 октября 2018

Попробуйте str_replace функции с \ t \ n символами:

str_replace("\t\n","\n", $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...