Замените относительные URL протокола http://

У меня есть приложение, которое загружает локальный файл и добавляет загруженные данные HTML. Эти данные иногда содержат относительные URL протокола, в основном //domain.com/file вместо http://domain.com/file, Положительным моментом является то, что при этом автоматически выбирается соответствующий протокол, который подходит для веб-доменов, но не при локальной загрузке. Затем он использует file://-Протокол.

Поэтому мне нужно заменить все вхождения attr="//domain.com/file" с attr="http://domain.com/file" - по существу добавление http: спереди. Я полагаю, проще всего сделать это на PHP, как мне этого добиться?

2 ответа

Решение

Используя preg_replace, если 'attr' находится только внутри тега:

$content = preg_replace('@(<.+?)(attr="//)(.*?>)@', '\\1attr="http://\\3', $content);

Предполагая, что attr="// текст не будет отображаться как свободный текст <p> ... attr="// ... </p>

С помощью str_replace

$contents = str_replace('attr="//', 'attr="http://', $contents);

С помощью preg_replace

$contents = preg_replace('|attr="//|', 'attr="http://', $contents);
Другие вопросы по тегам