Prova così:


<?
$href = "bla bla bla e altri tag HTML <a href=\"percorso/percorso/newLink?val=1ssadajdslsda\">bla bla bla e altri tag HTML ";
$pattern = "/^(.*)newLink\?val=([0-9]+)?(.*)/";
$replacement = '$1geNewLink($2)$3';
echo htmlentities(preg_replace($pattern, $replacement , $href));
?>