the modifier U tells the regular expression engine to be ungreedy, that means it matches the shortest possible pattern
$to_replace = '<link:page.html,xxx>
<link:page2.html,xyz>
<link:page3.html,abc>';
test this with my regular expression and afterwards test it with my regular expression but without the U and compare the output
you culd also write (.?) instead of (.) and ommit the U but that would be one more character 😉