Я знаю, что видел много такого, но мне нужно что-то немного более необычное, чем обычно. К сожалению, когда я ищу это где угодно, он оказывается похороненным в сообщениях о том, что просто превращаю ссылку в ссылку на HTML-тег. Я хочу, чтобы функция PHP удаляла «http: //» и «https: //» из ссылки, а также все, что находится после. *, Поэтому в основном то, что я ищу, - это превратить A в B.
A: http://www.youtube.com/watch?v=spsnQWtsUFM
B: <a href="http://www.youtube.com/watch?v=spsnQWtsUFM">www.youtube.com</a>
Если это поможет, вот моя текущая функция замены регулярного выражения PHP.
ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" class=\"bwl\" target=\"_new\">\\0</a>", htmlspecialchars($body, ENT_QUOTES)));
Возможно, было бы также полезно сказать, что я абсолютно не разбираюсь в регулярных выражениях. Спасибо!
РЕДАКТИРОВАТЬ: Когда я ввел такой комментарий blahblah https://www.facebook.com/?sk=ff&ap=1 blah
, я получил html, подобный этому<a class="bwl" href="blahblah https://www.facebook.com/?sk=ff&ap=1 blah">www.facebook.com</a>
, который вообще не работает, поскольку он берет с собой текст вокруг ссылки. Однако он отлично работает, если кто-то только комментирует ссылку. Это когда я изменил функцию на эту
preg_replace("#^(.*)//(.*)/(.*)$#",'<a class="bwl" href="\0">\2</a>', htmlspecialchars($body, ENT_QUOTES));
1
18.06.2011(.+?)
на[^/]+
18.06.2011