只删除2个字符串之间的空白


Remove white space only between 2 strings

我有一个这样的字符串:l' opp lop和我需要删除l'o之间的空白,所以它必须返回l'opp lop

但我也需要处理不同大小写的字符串,如:L' opp LOPL' Opp lopl' Opp lop,并返回正确的字符串,而这些字符串之间没有额外的空间,因此结果必须是:L'opp LOPL'Opp lopl'Opp lop

我尝试过$new = str_ireplace( "l' o", "l'o", $string );,但它总是返回一个包含l'o的字符串,所以如果该字符串是L'Opp lop,则结果总是小写:l'opp lop

是否可以使用regex来获得解决方案,因为我还需要使用它来匹配l' al' il' ul' e

感谢

您可以使用

~'b(l)''s+([a-z])~i

并替换为$1$2

参见regex演示

重点是使用捕获组和替换后需要返回的子模式。

Regex解释:

  • 'b-起始字边界
  • (l)-将字母lL匹配并捕获到组1中(因为使用了/i不区分大小写的修饰符)
  • '-文字撇号
  • 's+-1个或多个空格(您可以使用'h+仅限于水平空格)
  • ([a-z])-匹配并捕获组2中的任何ASCII字母(小写和大写)

在替换模式中,组1和组2分别是具有$1$2的反向引用。