我有一个这样的字符串:l' opp lop
和我需要删除l'
和o
之间的空白,所以它必须返回l'opp lop
。
但我也需要处理不同大小写的字符串,如:L' opp LOP
、L' Opp lop
、l' Opp lop
,并返回正确的字符串,而这些字符串之间没有额外的空间,因此结果必须是:L'opp LOP
、L'Opp lop
、l'Opp lop
。
我尝试过$new = str_ireplace( "l' o", "l'o", $string );
,但它总是返回一个包含l'o
的字符串,所以如果该字符串是L'Opp lop
,则结果总是小写:l'opp lop
。
是否可以使用regex来获得解决方案,因为我还需要使用它来匹配l' a
、l' i
、l' u
、l' e
?
感谢
您可以使用
~'b(l)''s+([a-z])~i
并替换为$1$2
。
参见regex演示
重点是使用捕获组和替换后需要返回的子模式。
Regex解释:
'b
-起始字边界(l)
-将字母l
或L
匹配并捕获到组1中(因为使用了/i
不区分大小写的修饰符)'
-文字撇号's+
-1个或多个空格(您可以使用'h+
仅限于水平空格)([a-z])
-匹配并捕获组2中的任何ASCII字母(小写和大写)
在替换模式中,组1和组2分别是具有$1
和$2
的反向引用。