Salve a tutti ho un problema con gli URL... in poche parole ho un testo che contiene HTML già formattato per lo standard W3C con questa funzione:

Codice PHP:
function clean_value($val) {

        if (
$val == "")
        {
            return 
"";
        }
        
$val str_replace" "       " "             $val );
        
$val str_replace"&"            "&am p;"         $val );//Ho scritto male amp perchè se no lo traduceva in &
        
$val str_replace"<!--"         "<!--"  $val );
        
$val str_replace"-->"          "-->"       $val );
        
$val preg_replace"/<script/i"  "<script"   $val );
        
$val str_replace">"            "&gt;"          $val );
        
$val str_replace"<"            "&lt;"          $val );
        
$val str_replace"\""           "&quot;"        $val );
        
$val preg_replace"/\|/"        "|"        $val );
        
//$val = preg_replace( "/\n/"        , "
"          , $val ); // Convert literal newlines
        
$val = preg_replace( "/\\\$/"      , "&#036;"        , $val );
        
$val preg_replace"/\r/"        ""              $val ); // Remove literal carriage returns
        
$val str_replace"!"            "!"         $val );
        
$val str_replace"'"            "'"         $val ); // IMPORTANT: It helps to increase sql query safety.
        
$val stripslashes($val);                                     // Swop PHP added backslashes
        
$val preg_replace"/\\\/"       "\"        $val ); // Swop user inputted backslashes
        
return $val;
    } 
Il problema è che non trasforma le & degli url in &amp; (Non capisco per quale arcana ragione) ora non potendo fare altro che usare str_replace direttamente su tutto il testo il risultato è che sballo tutto il risultato della funzione precedente (es. & #092; -> &amp;#092 e per questo ho pensato di creare un piccolo algoritmo che quando trova il codice <a href=" traduce tutto quello che trovare all'interno degli apici solo che non ho idea da dove iniziare per farlo... mi appello al vostro aiuto