从字符串中提取 URL

2023-12-02

我正在尝试找到一个可靠的解决方案来从字符串中提取网址。我有一个网站,用户可以在其中回答问题,并在来源框中输入信息来源,我允许他们输入网址。我想提取该网址并将其设为超链接。类似于雅虎问答的做法。

有谁知道可以做到这一点的可靠解决方案?

我发现的所有解决方案都适用于某些 URL,但不适用于其他 URL。

Thanks


约翰·格鲁伯有花了相当多的时间完善“一个正则表达式来统治所有”的链接检测。使用preg_replace()正如其他答案中提到的,使用以下正则表达式应该是检测链接的最准确(如果不是最准确)的方法之一:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

如果您只想匹配 HTTP/HTTPS:

(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从字符串中提取 URL 的相关文章

  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 更改滚动图像

    我的网站上有一个固定图像 该图像应该是 动画的 这意味着动画的单个帧应该被迭代 因此 我们的想法是拥有一个图像数组 每次用户滚动时 都会迭代该数组并且显示的图像会发生变化 从而创建动画 我不太习惯使用 JS 因此我真的不知道从哪里开始 我唯
  • 如何在Delphi 7中获取GIT?

    我试图使用以下代码 Delphi 获取全局接口表 uses Comobj ActiveX var cGIT IGlobalInterfaceTable NIL const CLSID StdGlobalInterfaceTable TGUI
  • 正则表达式匹配字符串最后一次出现后的所有内容

    正在努力寻找一种方法来做到这一点 因此感谢任何帮助 在单行上有简单的文本 并希望匹配最终之后的所有文本 tag 我在 Open Office 中使用正则表达式 所以我需要返回直接匹配而不是 JavaScript 数组 字符串看起来像这样 p
  • Python 中使用正则表达式进行字数统计

    使用正则表达式计算文档中英文单词的正确方法是什么 我尝试过 words re findall w open text txt read lower len words 但我似乎遗漏了几个单词 与 gedit 中的字数相比 我做得对吗 多谢
  • 如何用haml每隔几个div插入一个块?

    我想插入一个div row每三个街区wrap three span一起完成以下 haml 片段 但是这段代码插入了一个 div class row div 而不是包裹 span4 data apps applications each wi
  • Structr、现有 Neo4j 安装和 cypher shell

    我的 Windows 7 机器上有以下安装 Neo4j 社区版 3 1 0 结构 ui 2 0 1 我首先安装了 Neo4j 然后安装了 Structr UI 我能够运行 Structr UI 并创建架构 添加节点和关系 我有以下问题 我猜
  • Wix Burn - 自定义模板

    有没有办法改变安装程序中红色的 CD 图片 这是 Burn 项目的代码
  • HDFS Thrift服务器返回本地FS的内容,而不是HDFS

    我正在使用 Thrift 访问 HDFS 这是 HDFS 上预期的 也是正确的 内容 hadoop hdp namenode 01 hadoop fs ls Found 3 items drwxr xr x hadoop supergrou
  • 为什么我的 double 可以包含低于机器 epsilon 的值?

    我正在使用双精度求解方程 我得到 7 07649e 17作为解决方案而不是0 我同意它足够接近 我可以说它是相等的 但是我读到 C 双精度类型的机器 epsilon 是2 52这比我得到的值要大 那么为什么我的值比机器 epsilon 低呢
  • 如何在Python中生成随机字符串?

    如何在 Python 中创建随机字符串 我需要它先是数字 然后是字符 重复直到迭代完成 这就是我创建的 def random id length number 0123456789 alpha abcdefghijklmnopqrstuvw
  • 如何在 Android 中获取电话号码

    我想知道电话号码 我使用了这个示例代码 TelephonyManager tm TelephonyManager getSystemService TELEPHONY SERVICE String strphonenumber tm get
  • 使用 PhaseListener 代替 Servlet Filter 进行授权的限制

    我目前正在使用PhaseListener如下进行用户授权 private PhaseId phaseId PhaseId RESTORE VIEW Override public void afterPhase PhaseEvent eve
  • 浏览器控制台中需要 Javascript

    在浏览器控制台窗口中输入 javascript 时 1 以下代码有效 alert hi 2 以下则不然 function var scr document createElement script scr src http www myra
  • jsf 2.0 Primefaces 多个 Fileupload 不记得上传的文件

    我已经在这篇文章中修复了一些其他问题 fileuploadhandler 现在正在工作 我的代码如下 Bean ManagedBean ViewScoped public class TempBean implements Serializ
  • Laravel 5.6 Passport 驱动程序无法在 socket.io 中工作并给出未经授权的异常

    当驱动程序是 api 时 下面的代码可以完美运行 然后我创建了一个新项目并将驱动程序更改为护照 现在 我总是收到错误 未经授权 我可以确认请求标头在浏览器中具有授权令牌代码 请单击下面的图像进行检查 然后单击缩放以查看质量更好的图像 我在下
  • 规则集中的字体和行高顺序

    我认为规则集中 CSS 的顺序并不重要 只要不存在隐式重复的规则 例如border and border top 事实上 许多 CSS 样式指南建议采用任意顺序 例如 按组 或 按字母顺序 然而 顺序font and line height
  • NSURLConnection 在 GET 上提前关闭

    我正在研究一种集中 URL 连接的方法 用于从服务器发送和接收 JSON 数据 它适用于 POST 但不适用于 GET 我正在使用 Google App Engine 服务器 在我的计算机上它将处理 POST 请求并返回正确的结果 并正确记
  • Jetty:Servlet 无法转发到 JSP

    我遇到以下问题 我尝试将请求从 servlet 转发到 jsp 页面 但收到 404 当我直接访问 sites home jsp 时 它会加载 jsp WebAppContext sites new WebAppContext src co
  • java可执行jar创建

    如何从 java 文件创建可执行 jar 文件 只有一个使用awt和applet创建的java文件dm java 我需要创建带有图标或图像的可执行 jar 单击该 jar 它将作为应用程序打开 这是可能的 请帮我 Using Eclipse
  • 从字符串中提取 URL

    我正在尝试找到一个可靠的解决方案来从字符串中提取网址 我有一个网站 用户可以在其中回答问题 并在来源框中输入信息来源 我允许他们输入网址 我想提取该网址并将其设为超链接 类似于雅虎问答的做法 有谁知道可以做到这一点的可靠解决方案 我发现的所