Как обнаружить и удалить повторяющиеся предложения в строке?

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

По сути, из-за того, что я застрял в плохо конвертированном файле PDF в Excel, у меня много повторяющихся предложений в каждой ячейке.

Например:

$bad_string = "B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >";

$good_string = goodFunction($bad_String);
//echo 'B7R, B9R, B12R, B12M 430mm Disc 2005 >'

Как, черт возьми, это возможно?
Условие состоит в том, что плохая строка повторяется X раз. Он никогда не меняется, он просто копируется и вставляется на место много раз (из-за плохого преобразования PDF в Exel)

Есть ли какое-либо решение для этого?

0

Решение

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

$bad_string = "B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >";
echo preg_replace('~^(.*?)\1+$~', '\1', $bad_string);

Выход:

B7R, B9R, B12R, B12M 430mm Disc 2005 >

DEMO

Если предложения должны заканчиваться > символ, то вы можете использовать это регулярное выражение.

(.*?>)(?=(?:.*?\1)+$)

DEMO

$bad_string = "foo B7R, B9R, B12R, B12M 430mm Disc 2005 > bar B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >B7R, B9R, B12R, B12M 430mm Disc 2005 >";
echo preg_replace('~(.*?>)(?=(?:.*?\1)+$)~', '', $bad_string);

Выход:

foo  bar B7R, B9R, B12R, B12M 430mm Disc 2005 >
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]