将文本URL转换为HTML URL的功能

时间:2012-02-03 13:57:05

标签: php regex 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

有时,提取的链接最后还包含,'"。如何摆脱这些?

1 个答案:

答案 0 :(得分:0)

  

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

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

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

匹配"'

作为对另一个问题的一种解决方法,第一个字符类可以用空格进行扩充。

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

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