PHP создает ссылки хештега, но НЕ внутри существующего HTML-кода - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть это регулярное выражение для преобразования хеш-тегов в интерактивные ссылки:

$text = preg_replace('/(?<!\S)#([0-9a-zA-Z]+)/m', '<a href="/tag/$1">#$1</a>', $text, $maximum_tags);

Проблема заключается в том, что он также преобразуется, если мой текст содержит HTML-теги со стилем:

<span style="color:#CCC;">FOO</span>

Этопопытался бы создать хештег из этого #CCC, как я должен изменить регулярное выражение, чтобы работать только вне HTML-тегов?Например, в текстовых областях.

1 Ответ

0 голосов
/ 20 сентября 2018

Лексическое усилие по условному preg_replace к существующей разметке велико, вы должны предпочесть использовать такое содержимое, как DOM (используя ext/dom и его архитектуру класса DOMDocument), а также извлекать и заменять DOMText, чтобы привести хештег-ссылки всуществующий DOM.

...