Php正则替换的一个守则

Php正则替换的一个规则
有一段文字,下划线 字符可能有多有少,每一个字符都移动到 <u>标签里面来,比如:

 已知集合,则 __<u>&nbsp;</u>_____。
希望替换成:
已知集合,则 <u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>。

请教一下如何实现。

------解决思路----------------------
$s = "__<u>&nbsp;</u>_____";
echo preg_replace('#(_*)(<u>[^<]*)(</u>)(_*)#e', '"$2".str_repeat("&nbsp;", strlen("$1")+strlen("$4"))."$3"', $s); 
<u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u>