Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用正则表达式(PHP)删除此地址副本?_Php_Regex - Fatal编程技术网

如何使用正则表达式(PHP)删除此地址副本?

如何使用正则表达式(PHP)删除此地址副本?,php,regex,Php,Regex,我有一些如下的文本,我想删除最后的地址匹配,问题是这些地址有不同的格式,取决于文本: 我有这个: 要了解更多关于Groupon商品的信息,请参阅。\n\nUK床上用品退货:奥尔巴尼米尔、老霍尔街、米德尔顿、曼彻斯特M241AG 英国床上用品返回:奥尔巴尼工厂,老霍尔街,米德尔顿 曼彻斯特M241AG\n\n 由gskinner.com使用Fl构建 输出应该是这样的(我已经移除了米德尔顿老霍尔街的最后一家“奥尔巴尼工厂” 曼彻斯特M241AG”): 要了解更多关于Groupon商品的信息,请参阅。

我有一些如下的文本,我想删除最后的地址匹配,问题是这些地址有不同的格式,取决于文本:

我有这个:

要了解更多关于Groupon商品的信息,请参阅。\n\nUK床上用品退货:奥尔巴尼米尔、老霍尔街、米德尔顿、曼彻斯特M241AG
英国床上用品返回:奥尔巴尼工厂,老霍尔街,米德尔顿
曼彻斯特M241AG\n\n
由gskinner.com使用Fl构建

输出应该是这样的(我已经移除了米德尔顿老霍尔街的最后一家“奥尔巴尼工厂” 曼彻斯特M241AG”):

要了解更多关于Groupon商品的信息,请参阅。\n\nUK床上用品退货:奥尔巴尼米尔、老霍尔街、米德尔顿、曼彻斯特M241AG
英国床上用品退货:\n\n

由gskinner.com使用Fl构建

如果总是有副本,我会选择另一种方式:

  • 按新行拆分文本(使用preg_Split,因为有多个新行)
  • 找到带有地址的行
  • 把它切成两半
因此,在您的示例中,类似(额外详细):


如果总是有一个副本,我会走另一条路:

  • 按新行拆分文本(使用preg_Split,因为有多个新行)
  • 找到带有地址的行
  • 把它切成两半
因此,在您的示例中,类似(额外详细):


问题不清楚,请编辑显示预期输出的问题。我正在尝试使用match_all和preg_replace的不同选项,但是…..实际上问题不在于我认为的模式,而在于过程,我如何检测此重复项并在以后选择最后一个匹配项?是否总是会有重复项?是的,有一个重复的问题不清楚,请编辑显示预期输出的问题。我正在使用match_all和preg_replace尝试不同的选项,但是…..实际上问题不是我认为的模式,而是过程,如何检测此重复项并在以后选择最后一个匹配项?是否始终存在重复项?是的,存在重复项
$lines = preg_split('#\n+#', $text);
$addresses = $lines[1];
$address = substr($addresses, 0, floor(strlen($addresses) / 2));