2014-10-29 40 views
3
$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的preg_replace不完全取代PHP

$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出+ 我該怎麼辦? realmente habloespañolXD pero el ingles igual lo entiendo。! 有任何方法來驗證結果,例如$ 7帶來的信息添加到結果+ $ 7如果你來空沒有添加任何東西。

回答

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只有當它實際上得到匹配追加了比賽。