Заменить якорный текст на PHP (и регулярное выражение)

У меня есть строка, содержащая множество ссылок, и я бы хотел настроить их до того, как они будут напечатаны на экране:

У меня есть что-то вроде следующего:

<a href="http://www.dont_replace_this.com">replace_this</a> 

и хотел бы получить что-то вроде этого

 <a href="http://www.dont_replace_this.com">replace this</a> 

Обычно я просто использовал бы что-то вроде:

 echo str_replace("_"," ",$url); 

В этом случае я не могу этого сделать, поскольку URL-адрес содержит символы подчеркивания, чтобы он нарушал мои ссылки, мысль заключалась в том, что я мог бы использовать регулярное выражение, чтобы обойти это.

Есть идеи?

Это будет охватывать большинство случаев, но я предлагаю вам ознакомиться, чтобы убедиться, что ничего неожиданного не было пропущено или не было изменено.

  pattern = "/_(?=[^>]*<)/"; preg_replace($pattern,"",$url); 

Вот регулярное выражение: <a (. +?)> <a(.+?)>.+?<\/a> .

Я занимаюсь сохранением важных динамических элементов в теге привязки и заменяя его следующей функцией:

 preg_replace('/<a(.+?)>.+?<\/a>/i',"<a$1>REPLACE</a>",$url); 

Вы можете использовать это регулярное выражение

 (>(.*)<\s*/) 

наряду с preg_replace_callback .

РЕДАКТИРОВАТЬ :

 $replaced_text = preg_replace_callback('~(>(.*)<\s*/)~g','uscore_replace', $text); function uscore_replace($matches){ return str_replace('_','',$matches[1]); //try this with 1 as index if it fails try 0, I am not entirely sure }