【发布时间】:2016-12-05 12:26:50
【问题描述】:
使用 PHP preg_replace 和正则表达式
$string_1 = "leave sb. alone";
$string_2 = "pick one's way forward";
$string_2 = "suffer from sth.";
我需要用指定的字符屏蔽每个字符串,但保留空格、撇号和一些字符串不变,例如:
$mask_1 = "XXXXX sb. XXXXX";
$mask_2 = "XXXX XXX'X XXX XXXXXXX";
$mask_2 = "XXXXXX XXXX sth.";
在这种情况下,我想保留:sb。某事空格和撇号。 任何帮助将不胜感激。
与$mask_1 = preg_replace('/(sb.\K)?./s', 'X', $string_1); 我只留下'sb'。但空间仍在变化。
PS:@Casimir et Hippolyte 和@Wiktor Stribiżew 的答案都是很好的解决方案,但我接受了 Wiktor 的 SKIP-FAIL 实施和解释。非常感谢!
【问题讨论】:
-
好的,好的。那么你的问题是什么?您显然想要替换除某些特定字符和某些短语之外的所有字符。去做吧。
-
@arkascha 感谢您的建议。