У меня есть строка, содержащая множество ссылок, и я бы хотел настроить их до того, как они будут напечатаны на экране:
У меня есть что-то вроде следующего:
<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 }