我有一个这样的字符串:
"ABCCCCCCCCCCCCCDEF"
我使用代码
$value=preg_replace('/[C]{3,}/',"Z",$value);
返回此
"ABZZZZCDEF"
我如何得到以下结果?
"ABZCDEF"
答案 0 :(得分:4)
<?php
$a = "ABCCCCCCCCCCCCCDEF";
echo preg_replace('/[C]+/', 'ZC', $a);
?>
给出
ABZCDEF
答案 1 :(得分:3)
我认为这就是你要找的东西:
$value = preg_replace('/([C]{3})+/', "Z", $value);
...或,“将一个或多个三个C
组替换为Z
。”您发布的代码不像您说的那样工作。我怀疑,正如蒂姆建议的那样,你真的这样做了:
$value = preg_replace('/[C]{3}/', "Z", $value);
请注意缺少逗号(,
)。这会用C
替换每组三个Z
,其中我的版本用一个替换所有三个C
的组 Z
。
'/[C]{3,}?/'
或'/[C]{3,}/U'
。
答案 2 :(得分:1)
您的preg_replace
似乎默认为 ungreedy 。在这种情况下,您可以使用额外的{3,}
更改+
量词,这意味着最小为3个字符:
= preg_replace('/[C]{3,}+/',