我正在尝试从php中的纯文本字符串中提取一个或多个url。这是一些例子
"mydomain.com has hit the headlines again"
"this is 1 domain.com and this is anotherdomain.co.uk but sometimes http://thirddomain.net"
提取“http://www.domain.com”,“http://www.anotherdomain.co.uk”,“http://www.thirddomain.net”
我需要两种特殊情况 - 我正在考虑正则表达式,但不完全理解它们 1)所有符号如'('或')'和空格(不包括连字符)都需要删除 2)单词dot需要用符号替换。 ,所以dot com将是.com
p.s我知道PHP validation/regex for URL,但无法解决如何使用它来实现最终目标。
由于
答案 0 :(得分:4)
在这种情况下,很难获得100%正确的结果。 根据输入的不同,您可能会尝试强制匹配最常用的第一级域名(添加更多内容):
(?:https?://)?[a-zA-Z0-9\-\.]+\.(?:com|org|net|biz|edu|uk|ly|gov)\b
您可能需要删除单词边界(\ b)以获得不同的结果。
你可以在这里测试一下:
编辑:关于你的案件 1)从什么中移除? 2)这可以在php中完成: $result = preg_replace('/\s+dot\s+(?=(com|org|net|biz|edu|and_ect))/', '.', $input);
但我没有什么重要的注意事项:
但不是!
example.org