用php查找文本中的所有URL(链接)

时间:2011-05-19 22:05:51

标签: php url text preg-replace hyperlink

我有这个代码正则表达式,它应该将所有类型的不同URL转换为某些文本中的链接。

preg_replace代码是:

$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@';
$text = preg_replace($regex, '<a href="$1">$1</a>', $item);

现在它几乎适用于您可以想象的所有网址,但我遇到的问题是逗号和网址中的特殊字符......

问题在于我:

  

http://www.sdfsdfsdf.sd/si/391,1000,1/more.html

     

http://sdfsddsdf-sdfsdfds.sr/component/option,com_contact/Itemid,3/lang,si/

有趣的是在stackoverflow这两个都可以:)

谢谢,最好的问候,

3 个答案:

答案 0 :(得分:6)

你必须稍微编辑你的正则表达式。这将完成这项工作:

$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';

正如您所看到的,此处添加了一个逗号[-\w/_\.\,],仅此而已。

享受!

答案 1 :(得分:2)

尝试使用以下功能:

function replaceURLWithHTMLLinks(text) {
  var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
  return text.replace(exp,"<a href='$1'>$1</a>"); 
}

在此处找到:How to replace plain URLs with links?

答案 2 :(得分:-1)

您可以使用此库https://github.com/mxkh/url-finder在HTML网页或文本中轻松查找网址。我使用作曲家 /* save the samples into the arrays * that will become the CSV files */ int32_t time = 0; for(int j = 0; (j < numOfSamples) && (time < endTime); j++){ time = networkTime + (j * SAMPLE_INTERVAL_MS); timeArray[sampleIndex] = time; sampleArray[sampleIndex] = uncompressedBlockDataArray[j]; sampleIndex++; }

进行安装

此lib也支持从流行的视频服务中寻找视频链接,如Youtube,Vimeo。

我希望这对某人有帮助。