Php 如何检测和删除字符串中的重复句子?

Php 如何检测和删除字符串中的重复句子?,php,string,substring,repeat,Php,String,Substring,Repeat,我刚刚在另一个问题上得到你们大家的帮助,我想知道我的下一个问题是否也能很容易地解决 基本上,由于我一直无法将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 4

我刚刚在另一个问题上得到你们大家的帮助,我想知道我的下一个问题是否也能很容易地解决

基本上,由于我一直无法将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的转换错误)


有什么解决办法吗?

我会使用
preg\u 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 >
foo  bar B7R, B9R, B12R, B12M 430mm Disc 2005 >

如果句子必须以
符号结尾,则可以使用此正则表达式

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

输出:

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

使用preg_match()和preg_replace()函数您的代码运行得非常好。但由于某种原因,它在这一点上失败了:str=“Centroliner,Cityliner,Linienbus,Skyliner,Starliner,Transliner 2轴连续电位器Centroliner,Cityliner,Linienbus,Skyliner,Starliner,Transliner 2轴连续电位器”;看见使用锚,它会失败,因为它有一个额外的尾部空间。见修正!!只是删除了新的线路,仅此而已。