noindex_external_links.module contain mistake in regular expression — it processes all tags beginning with <a

$regexp = '/<a(.*?)\shref="([^"]+)"\s*([^>]*)>(.*?)<\/a>/is';

and spoils tags like <abbr> and maybe <acronym> too.

Example: source string is <abbr title="Ky">q</abbr> some text <a href="/42">about</a>, after processing string begins with <a href="/42" bbr title="Ky">q</a>

Proposed fixing method: replace first (.*?) with ([^>]*?)


The same in Russian:

noindex_external_links.module содержит ошибку в регулярном выражении — оно обрабатывает все тэги, начинающиеся с <a

$regexp = '/<a(.*?)\shref="([^"]+)"\s*([^>]*)>(.*?)<\/a>/is';

и портит такие тэги как <abbr> и, возможно, <acronym>.

Пример: строка <abbr title="Ky">q</abbr> some text <a href="/42">about</a> после обработки модулем начинается с <a href="/42" bbr title="Ky">q</a>

Предлагаемое решение: заменить первое вхождение (.*?) на ([^>]*?)

Comments

shoorick created an issue.