Я использую следующий код для добавления <span>
тегов за <a>
тегами.
$html = preg_replace("~<a.*?href=\"$url\".*?>.*?</a>~i", "$0<span>test</span>", $html);
Код работает нормально для обычных ссылок (т. Е. http://www.google.com/),, но он не будет выполнять замену, если содержимое $ url равно $link$/3/
.
Это пример кода, демонстрирующий (неправильное) поведение:
<?php
$urls = array();
$urls[] = '$link$/3/';
$urls[] = 'http://www.google.com/';
$html = '<a href="$link/3/">Test Link</a>' . "\n" . '<a href="http://www.google.com/">Google</a>';
foreach($urls as $url) {
$html = preg_replace("~<a.*?href=\"$url\".*?>.*?</a>~i", "$0<span>test</span>", $html);
}
echo $html;
?>
И это вывод, который он производит:
<a href="$link$/3/">Test Link</a>
<a href="http://www.google.com/">Google</a><span>test</span>