function makeLinks($text) {
$text = preg_replace('%(?<!href=")(((f|ht){1}(tp://|tps://))[-a-zA-^Z0-9@:\%_\+.~#?&//=]+)%i',
'<a href="\\1">\\1</a>', $text);
$text = preg_replace('%([:space:]()[{}])(www.[-a-zA-Z0-9@:\%_\+.~#?&//=]+)%i',
'\\1<a href="http://\\2">\\2</a>', $text);
return $text;
}
Пропускает, если у меня есть что-то вроде этого: - www.website.org
(дефис, затем пробел) в начале строки.Если у меня есть - www.website.org - www.website.org, он ловит второй.
Разве это не должно быть покрыто пробелом во втором preg_replace
?
Iтакже пытался %(\s\n\r(){})
Я запускаю его через уценку, но только после (markdown(makeLinks($foo))
), поэтому я подумал, что это не должно мешать, но когда я снимаю уценку, и все просто звучит в одномлиния, это делает ссылки из них.Если я поставлю makeLinks(markdown($foo))
, то он будет вести себя так же, как и изначально ... не делая ссылки из тех, которые начинаются с www в начале элементов списка.