$string = '45N654345W124R3546M';
echo preg_replace('/(\w{2})(\w{2})(\w{2})(\w{4})(\w{4})(\w{4})((\w{1})?)/','$1-$2-$3-$4-$5-$6+$7',$string);
结果良好:45-N6-54-345W-124R-3546 + M
$string = '45N654345W124R3546';
echo preg_replace('/(\w{2})(\w{2})(\w{2})(\w{4})(\w{4})(\w{4})((\w{1})?)/','$1-$2-$3-$4-$5-$6+$7',$string);
结果不好:45-N6-54-345W-124R-3546 + 我需要返回45-N6-54-345W-124R-3546,输出+ 我能做什么? realmentehabloespañolXDpero el ingles igual lo entiendo。! 有任何方法可以验证结果,比如$ 7会将信息添加到结果中+ $ 7如果你是空的而不添加任何内容。
答案 0 :(得分:1)
您需要检查最后一组是否匹配。为此,您可以使用preg_replace_callback
并根据需要操纵匹配。以下是您可以用它做的一个例子:
preg_replace_callback('/(\w{2})(\w{2})/',
function($groupings){return empty($groupings[2]) ? $groupings[1]:$groupings[1].'+'.$groupings[2];},
$string);
只有当匹配实际匹配时,才会将匹配附加到索引2
。