Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使此链接使脚本具有降价行为?_Php_Regex_Hyperlink_Markdown - Fatal编程技术网

Php 如何使此链接使脚本具有降价行为?

Php 如何使此链接使脚本具有降价行为?,php,regex,hyperlink,markdown,Php,Regex,Hyperlink,Markdown,我正在使用PHP markdown,但我还需要一个脚本来将纯文本链接转换为可剪裁的链接。两者都是独立工作的,但当我试图同时运行它们时,如果我先运行markdown,makelinks仍然会处理html代码并将事情搞砸。。和。。反之亦然。你知道怎么阻止它那样做吗?我想不出正则表达式可以忽略降价样式的链接 function makeLinks($text) { $text = preg_replace('%(((f|ht){1}tp://)[-a-zA-^Z0-9@:\%_\+.~#?&am

我正在使用PHP markdown,但我还需要一个脚本来将纯文本链接转换为可剪裁的链接。两者都是独立工作的,但当我试图同时运行它们时,如果我先运行markdown,makelinks仍然会处理html代码并将事情搞砸。。和。。反之亦然。你知道怎么阻止它那样做吗?我想不出正则表达式可以忽略降价样式的链接

function makeLinks($text) {
    $text = preg_replace('%(((f|ht){1}tp://)[-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;
}

通过猜测和变通办法,可以最好地解决双链接问题。(我们有一些重复的问题,但我找不到一个好问题。)

由于已转换的
http://
-URL仅出现在
href=“
之后,因此您可以将其用于否定断言

(?<!href="|>)
(?)(((f|ht){1}tp://)。。。
您的第二个正则表达式使用:space:作为锚点,因此应该已经具有容错能力。

太棒了!它(看起来)工作得很好。谢谢。
(?<!href="|>)
$text = preg_replace('%(?<!href="|>)(((f|ht){1}tp://)...