Decided to entertain the idea. Adapted from my snippet that changes anchors to collapsed domain names. Little too verbose, but seems to work.
add_filter( 'the_content', 'anchors_to_page_titles' );
function anchors_to_page_titles( $content ) {
preg_match_all( '/<a.*?href="https://wordpress.stackexchange.com/questions/6023/(.*?)".*?>(.*?)<\/a>/', $content, $matches );
array_shift( $matches );
foreach( $matches[0] as $key => $url ) {
$anchor = $matches[1][$key];
if( $url == $anchor ) {
$transient_key = 'page_title_'.md5($url);
$anchor = get_transient($transient_key);
if( !$anchor ) {
$response = wp_remote_request($url);
$body = wp_remote_retrieve_body($response);
$pattern = '/title>(.*?)</';
$title = array();
preg_match( $pattern, $body, $title);
if( !empty( $title ) ) {
$title = $title[1];
$anchor = $title;
set_transient( $transient_key, $anchor, 60*60*24 );
}
else {
$anchor = $url;
set_transient( $transient_key, $anchor, 60*60 );
}
}
$content = str_replace( ">{$url}</a>", ">{$anchor}</a>", $content );
}
}
return $content;
}
PS maybe it would make sense to modify post on save rather than filtering on display… Well, as per my comment I don’t think page titles are good for this anyway.