RegEx: соответствие URL, включая тильду

0

Мне нужно сопоставить относительные URL-адреса в моем коде и заменить его абсолютными URL-адресами. В этих относительных URL - адресов есть ~ символ, который я не могу показаться, чтобы соответствовать.

$page = preg_replace('/src="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','src="' . $url . '$2"', $page);
$page = preg_replace('/href="(\/)?([\w_\-\/\.\?&=@%#]*)"/i','href="' . $url . '$2"', $page);

Это должно заменить мои URL-адреса, но это не работает с этими URL-адресами:

Как так?

Теги:

2 ответа

0

/~/ еще не работает. Он должен заменить /~/ только на домен, без подпапки.

Это, вероятно, проще всего, если мы сделаем это на дополнительном этапе замены.

$domain = 'www.domain.dk';
$page = preg_replace("#($domain/)~/#", '$1', $page);
0

Я бы использовал это регулярное выражение:

(?:src="|href=")(?!http)\/?(.+?)"

Изображение 174551

Демоверсия Debuggex

Это позволит вам поймать все URL-адреса в атрибутах src или href, которые не запускаются по http (и это позаботится о наличии или нет ведущей косой черты):

$page = preg_replace('/(?:src="|href=")(?!http)\/?(.+)"/i', $url . '$1', $page);
  • 0
    Отлично. Благодарю. Но я получаю сообщение об ошибке: Warning: preg_replace(): Unknown modifier '(' ... Возможно, что-то отформатировано?
  • 0
    Ой извините, пропустил первый / ! [сообщение отредактировано]
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню