Замените относительные 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);