2011-04-01 73 views
0

我正在使用PHP markdown,但我也需要一个脚本来将明文链接转换为可信的链接。两者都是独立工作的,但是当我尝试将它们一起运行时,如果我先运行markdown,则makelinks仍会处理html代码并将其拧紧。反之亦然。任何想法如何阻止它做到这一点?我想不通正则表达式忽略降价链接样式如何使这个链接制作脚本与降价行为?

function makeLinks($text) { 
    $text = preg_replace('%(((f|ht){1}tp://)[-a-zA-^[email protected]:\%_\+.~#?&//=]+)%i', 
    '<a href="\\1">\\1</a>', $text); 
    $text = preg_replace('%([[:space:]()[{}])(www.[[email protected]:\%_\+.~#?&//=]+)%i', 
    '\\1<a href="http://\\2">\\2</a>', $text); 

     return $text; 
} 

示例文本:

###[Title Section](http://domain/folder/page.html) 
- Blah blah some text and then a link: www.webpage.org. 

回答

1

的双linkify可以解决问题最好的猜测和解决方法。 (我们有一些重复的问题,但是我还没有找到一个很好的一个..)

既然已经转换http:// -urls href=">之后才会出现,你可以使用那些消极的断言。

(?<!href="|>) 

如果你的第一个正则表达式的开头这样写:

$text = preg_replace('%(?<!href="|>)(((f|ht){1}tp://)... 

你的第二个正则表达式使用:空间:作为锚,所以应该是容错的了。

+0

辉煌!它(似乎是)完美地工作。谢谢。 – Damon 2011-04-01 23:03:17