Ваш шаблон (http)|(.html)|(.htm)
использует чередование с 3 группами захвата и в коде использует группу 1 в качестве замены.Обратите внимание, чтобы экранировать точку, чтобы она соответствовала буквально.
Если URL должен заканчиваться htm или html, вы можете использовать:
\bhttps?:\S+\.html?\b
Объяснение
\bhttps?:
Граница слова \b
, чтобы запретить использование http в качестве слова с более длинным соответствием \S+
Совпадение 1+ раз, а не пробельный символ \.html?\b
Совпадение с точкой, за которой следует htm
и необязательный l
.В конце слово границы, чтобы предотвратить HTML?будучи частью более длинного слова
Regex demo | php demo