我有一个正则表达式数组,我用相同的字符替换。我将如何使用或“|” 用我的正则表达式来降低数组计数?

我的数组中有更多设置,但为了简单起见,我只使用或“|”放置我想要组合在一起的那些。


$patterns = array();

$patterns[1] = "/(?:\:)/";

$patterns[2] = "/(?:\-_)/";

$patterns[3] = "/(?:\_-)/";

$replacements = array();

$replacements[1] = "-";

$replacements[2] = "-";

$replacements[3] = "-";

preg_replace($patterns, $replacements, $data['string']);

我尝试了不同的尝试,但没有成功。下面是对所需数组进行分组的尝试:


$patterns = array();

$patterns[1] = "/(?::|-_|_-|)/";

$replacements = array();

$replacements[1] = "-"

我所有的其他数组都有一个独特的$replacements。保留原始设置按我的意愿工作,但我只是想通过将这 3 个分组为 1 来降低数组计数。这个正则表达式实际上按预期工作,但对于我的场景,我不得不按原样保留我的原始设置。它给出了混合结果是因为替换的顺序。在一组中触发替换会产生奇怪的结果。


函数式编程
浏览 92回答 1
1回答

小唯快跑啊

由于替换是相同的-,您可以将所有匹配的正则表达式与|并使用更简单的版本preg_replace:$data['string'] = preg_replace('/(?::|-_|_-|)/', '-', $data['string']);这里(?::|-_|_-|)将匹配一个:or-_或_-。
打开App,查看更多内容
随时随地看视频慕课网APP