Te recomiendo que utilices la función str_replace (que reemplaza una subcadena por otra), y te puede ser muy util la función explode (por ejemplo, si guardas las urls en la BD de la forma http://www.google.com.arºhttp://lawebdelprogramador.com), lo cual se guardaría en un array de urls.
En http://php.net busca las funciones y familiarízate con ellas, pero te pongo un ejemplo para aclararte un poco las cosas:
<?php
$urls = "http://www.google.com.arº";
$urls .= "http://cguimaraenz.com.arº";
$urls .= "http://www.lawebdelprogramador.com";
$noticia = "A través del buscador ºGoogleº, el señor ºCarlos Guimaraenzº encontró el foro de ºLWPº desde el cual contesta su duda.";
$arrayUrls = explode("º",$urls);
$cantUrls = count($arrayUrls);
$pos = 1;
for ($i = 0; $i < $cantUrls; $i++) {
$pos = strpos($noticia,"º",$pos);
$noticia = substr_replace($noticia,"<a href='$arrayUrls[$i]'>",$pos,1);
$pos = strpos($noticia,"º",$pos);
$noticia = substr_replace($noticia,"</a>",$pos,1);
}
echo $noticia;
?>
Lo que hace esto es recoger el campo con las url (separadas por el símbolo º), generar un string de urls, y luego agregar las etiquetas <a> (una de apertura con la url correspondiente y otro de cierre).
Por lo tanto, sólo necesitas un campo para el titular, otro para la noticia y otro para todas las urls, teniendo en cuenta que debes mantener el orden de las urls en concordancia con su orden de aparición en la noticia.
Espero que te sea de ayuda. Un abrazo!