函数将文本URL转换为HTML URL


Function to convert Text URL into HTML URL

我的代码是:

$rawhtml = file_get_contents( "site url" );
$pat= '/((http|ftp|https):'/'/['w#$&+,'/:;=?@.-]+)[^'w#$&+,'/:;=?@.-]/i';
preg_match_all($pat,$rawhtml,$matches1);
foreach($matches1[1] as $plinks)
{
    $links_array[]=$plinks;
}

在测试了几种情况后,我注意到该函数存在一些"泄漏"。如果有空白,链接就会断开。

例如,我在一个变量中有一个文本URL:

$rawhtml = " http://www.filesonic.com/file/2185085531/TEST Voice 640-461 Test Cert Guide.epub
"

结果应该是一条接一条的链接:

http://www.filesonic.com/file/2185085481/TEST Voice (640)+461 Test Cert Guide.pdf

但结果是

http://www.filesonic.com/file/2185085531/TEST

有时提取的链路在末尾也包含,'"。如何摆脱这些?

如何从提取的链接中删除那些逗号、引号或双引号

可以使用(?<![,'"])在末尾排除某些内容。但你的问题是,你根本不应该使用尾随字符类:

 [^'w#$&+,'/:;=?@.-]

这就是"'的匹配。

作为解决另一个问题的方法,第一个字符类可以添加一个空格。

 ['w#$&+,'/:;=?@. -]+
                 ▵

如前所述,这可能不是一个好的解决方案,并可能导致其他不匹配。