In linea di massima sono preferibili le funzioni preg_* piuttosto che ereg*, per questioni di prestazioni
codice:
$str1 = 'href="#"';
$str2 = 'href="prova.php"';
$str3 = 'href="/dir/pagina.ext"';
echo "Str1: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str1) . "\n";
echo "Str2: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str2) . "\n";
echo "Str3: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str3) . "\n";
La sintassi č leggermente diversa ma il succo non cambia
Nel caso delle preg_* hai la funzione preg_quote() per fare l'escape dei caratteri speciali.. e le virgolette non rientrano tra questi