Я все еще относительно новичок в регулярных выражениях и чувствую, что мой код слишком жадный. Я пытаюсь добавить атрибут id к существующим ссылкам в куске кода. Мои функции таковы:
function addClassHref($str) {
//$str = stripslashes($str);
$preg = "/<[\s]*a[\s]*href=[\s]*[\"\']?([\w.-]*)[\"\']?[^>]*>(.*?)<\/a>/i";
preg_match_all($preg, $str, $match);
foreach ($match[1] as $key => $val) {
$pattern[] = '/' . preg_quote($match[0][$key], '/') . '/';
$replace[] = "<a id='buttonRed' href='$val'>{$match[2][$key]}</a>";
}
return preg_replace($pattern, $replace, $str);
}
Это добавляет тег id, как я хочу, но нарушает гиперссылку. Например:
Если исходный код: <a href="http://www.google.com">Link</a>
Вместо <a id="class" href="http://www.google.com">Link</a>
Это дает
<a id="class" href="http">Link</a>
Есть предложения или мысли?