2011-08-20 3 views
5

Eventuali duplicati:
replace ereg_replace with preg_replaceModifica funzione per utilizzare preg_replace() invece di ereg_replace

ho ottenuto la seguente funzione all'interno di una base di codice che prende una stringa e rende i collegamenti attivi. Ho notato che ereg_replace() è Depreciated. Come dovrei cambiarlo per usare preg_replace?

function makeActiveLink($originalString){ 

     $newString = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $originalString); 
     return $newString; 
    } 

risposta

1
function makeActiveLink($originalString) { 
    $pattern '#[a-z]+://[^<>\s]+[[a-z0-9]/]#i'; 
    $newString = preg_replace($pattern, '<a href="\\0" target="_blank">\\0</a>', $originalString); 

    return $newString; 
} 
4

È possibile tenerlo quasi esattamente lo stesso, ma sarebbe preferibile cambiare alcune cose:

function makeActiveLink($originalString){ 
    $newString = preg_replace('#[a-z]+://[^<>\s]+[[a-z0-9]/]#i', '<a href="\0" target="_blank">\0</a>', $originalString); 

    return $newString; 
} 

Nota che ho usato # come delimitatore perché avete barre all'interno della vostra stringa.

+0

Puoi usare 'A-z' invece di' a-zA-Z', o usare 'a-z' insieme al modificatore' i' per dire al motore delle espressioni regolari di ignorare il caso. –

+0

@Samir: Grazie, cambiato. – Ryan