php regex para corresponder fora das tags html

Estou fazendo um preg_replace na página html. Meu padrão tem como objetivo adicionar a tag circundante a algumas palavras em html. No entanto, às vezes minha expressão regular modifica as tags html. Por exemplo, quando tento substituir este texto:

<a href="example.com" alt="yasar home page">yasar</a>

De modo ayasar<span class="selected-word">yasar</span>, minha expressão regular também substitui o yasar no atributo alt da tag anchor. Atualpreg_replace() Estou usando a seguinte aparência:

preg_replace("/(asf|gfd|oyws)/", '<span class=something>${1}</span>',$target);

Como posso fazer uma expressão regular, para que não corresponda a nada dentro de uma tag html?

questionAnswers(4)

yourAnswerToTheQuestion