我有这个代码正则表达式,它应该将所有类型的不同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这两个都可以:)
谢谢,最好的问候,
答案 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>");
}
答案 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。
我希望这对某人有帮助。