Я пытаюсь сделать замену между строкой, содержащей ссылку, с той же строкой, инкапсулированной в html href blocks. Я новичок в регулярных выражениях и читаю на них - я придумал это выражение, проходящее через SO и другие сайты.Регулярное выражение не соответствует, что я делаю неправильно?
$s = 'This is a stupid site: www.etsy.com';
$regEx = '#(^www\.|^http://)([a-zA-Z0-9/?\-&=_\.]+\.com|\.net|\.org|\.ca)|(/[a-zA-Z0-9/?\-_&=\.]+)#';
$ret = preg_replace($regEx, "<a href='$1$2$3'>$1$2$3</a>", $s);
echo $ret;
Это не возвращает мне ссылку на все
и это не относится к «HTTP: //» в ссылке:
$s = 'This is a stupid video http://www.youtube.com/watch?v=MkXVM6ad9nI';
$regEx = '#(^www\.|^http://)([a-zA-Z0-9/?\-&=_\.]+\.com|\.net|\.org|\.ca)|(/[a-zA-Z0-9/?\-_&=\.]+)#';
$ret = preg_replace($regEx, "<a href='$1$2$3'>$1$2$3</a>", $s);
echo $ret;
Я все еще пытаюсь так это может измениться ... но любая помощь будет оценена по мере того, как я приближаюсь к концу своего ума.
Заранее спасибо за ваше время
P.S: Я попробовал это в RegexBuddy и вся строка подсвечивается, когда я тест ... так что я на самом деле интересно, что я делаю неправильно.
'^' закрепляет начало строки или весь предмет строки. – mario
Что вы делаете неправильно, так это то, что вы пытаетесь разобрать HTML с регулярными выражениями, что невозможно, поскольку HTML не является обычным языком. Вместо этого используйте парсер HTML. –
@ TheParamagneticCroissant: Он пытается разобрать URL-адрес. –